From 6a0767b020da44b34016b411731bd29f82714268 Mon Sep 17 00:00:00 2001 From: DevExpressExampleBot Date: Mon, 23 Apr 2018 19:21:59 +0300 Subject: [PATCH 01/10] initial commit --- .gitattributes | 4 + .gitignore | 297 + CS/Data Base Files/Data Base Files.zip | Bin 0 -> 226163 bytes CS/MVCDashboardDesigner.sln | 19 + CS/MVCDashboardDesigner/App_Data/nwind.ldb | Bin 0 -> 64 bytes CS/MVCDashboardDesigner/App_Data/nwind.mdb | Bin 0 -> 1789952 bytes .../App_Start/DashboardDesigner.cs | 19 + .../App_Start/FilterConfig.cs | 10 + .../App_Start/RouteConfig.cs | 23 + .../App_Start/WebApiConfig.cs | 16 + CS/MVCDashboardDesigner/Content/Site.css | 36 + CS/MVCDashboardDesigner/Content/jquery-ui.css | 1225 ++ .../Content/jquery-ui.min.css | 7 + .../Controllers/HomeController.cs | 18 + .../DataBaseEditaleDashboardStorage.cs | 108 + CS/MVCDashboardDesigner/Global.asax | 1 + CS/MVCDashboardDesigner/Global.asax.cs | 68 + .../MVCDashboardDesigner.csproj | 244 + .../Properties/AssemblyInfo.cs | 35 + .../Properties/Settings.Designer.cs | 37 + .../Properties/Settings.settings | 14 + CS/MVCDashboardDesigner/Scripts/AjaxLogin.js | 110 + CS/MVCDashboardDesigner/Scripts/cldr.event.js | 585 + CS/MVCDashboardDesigner/Scripts/cldr.js | 662 + .../Scripts/cldr.supplemental.js | 101 + .../Scripts/cldr.unresolved.js | 164 + .../Scripts/globalize.currency.js | 410 + .../Scripts/globalize.date.js | 1887 ++ CS/MVCDashboardDesigner/Scripts/globalize.js | 356 + .../Scripts/globalize.message.js | 1846 ++ .../Scripts/globalize.number.js | 1275 ++ .../Scripts/jquery-1.11.3.js | 10351 ++++++++++ .../Scripts/jquery-1.11.3.min.js | 5 + .../Scripts/jquery-ui-1.11.4.js | 16617 ++++++++++++++++ .../Scripts/jquery-ui-1.11.4.min.js | 13 + .../Scripts/jquery.unobtrusive-ajax.js | 184 + .../Scripts/jquery.unobtrusive-ajax.min.js | 19 + .../Scripts/jquery.validate-vsdoc.js | 1302 ++ .../Scripts/jquery.validate.js | 1245 ++ .../Scripts/jquery.validate.min.js | 16 + .../Scripts/jquery.validate.unobtrusive.js | 344 + .../jquery.validate.unobtrusive.min.js | 19 + .../Scripts/knockout-3.3.0.debug.js | 5475 +++++ .../Scripts/knockout-3.3.0.js | 115 + .../modernizr-2.0.6-development-only.js | 1160 ++ .../Views/Home/Index.cshtml | 8 + .../Shared/DisplayTemplates/Boolean.cshtml | 4 + .../Shared/EditorTemplates/Boolean.cshtml | 2 + .../Shared/EditorTemplates/DateTime.cshtml | 2 + .../Shared/EditorTemplates/Decimal.cshtml | 2 + .../EditorTemplates/EmailAddress.cshtml | 4 + .../EditorTemplates/MultilineText.cshtml | 4 + .../Shared/EditorTemplates/Password.cshtml | 4 + .../Shared/EditorTemplates/String.cshtml | 14 + .../Views/Shared/_Layout.cshtml | 29 + CS/MVCDashboardDesigner/Views/Web.config | 54 + .../Views/_ViewStart.cshtml | 3 + CS/MVCDashboardDesigner/Web.Debug.config | 30 + CS/MVCDashboardDesigner/Web.Release.config | 31 + CS/MVCDashboardDesigner/Web.config | 109 + CS/MVCDashboardDesigner/packages.config | 15 + LICENSE | 5 + Readme.md | 8 + VB/Data Base Files/Data Base Files.zip | Bin 0 -> 226163 bytes VB/MVCDashboardDesigner.sln | 19 + VB/MVCDashboardDesigner/App_Data/nwind.ldb | Bin 0 -> 64 bytes VB/MVCDashboardDesigner/App_Data/nwind.mdb | Bin 0 -> 1789952 bytes .../App_Start/DashboardDesigner.vb | 18 + .../App_Start/FilterConfig.vb | 11 + .../App_Start/RouteConfig.vb | 20 + .../App_Start/WebApiConfig.vb | 15 + VB/MVCDashboardDesigner/Content/Site.css | 36 + VB/MVCDashboardDesigner/Content/jquery-ui.css | 1225 ++ .../Content/jquery-ui.min.css | 7 + .../Controllers/HomeController.vb | 17 + .../DataBaseEditaleDashboardStorage.vb | 93 + VB/MVCDashboardDesigner/Global.asax | 1 + VB/MVCDashboardDesigner/Global.asax.vb | 64 + .../MVCDashboardDesigner.vbproj | 247 + .../My Project/AssemblyInfo.vb | 36 + .../My Project/Settings.Designer.vb | 36 + .../My Project/Settings.settings | 14 + VB/MVCDashboardDesigner/Scripts/AjaxLogin.js | 110 + VB/MVCDashboardDesigner/Scripts/cldr.event.js | 585 + VB/MVCDashboardDesigner/Scripts/cldr.js | 662 + .../Scripts/cldr.supplemental.js | 101 + .../Scripts/cldr.unresolved.js | 164 + .../Scripts/globalize.currency.js | 410 + .../Scripts/globalize.date.js | 1887 ++ VB/MVCDashboardDesigner/Scripts/globalize.js | 356 + .../Scripts/globalize.message.js | 1846 ++ .../Scripts/globalize.number.js | 1275 ++ .../Scripts/jquery-1.11.3.js | 10351 ++++++++++ .../Scripts/jquery-1.11.3.min.js | 5 + .../Scripts/jquery-ui-1.11.4.js | 16617 ++++++++++++++++ .../Scripts/jquery-ui-1.11.4.min.js | 13 + .../Scripts/jquery.unobtrusive-ajax.js | 184 + .../Scripts/jquery.unobtrusive-ajax.min.js | 19 + .../Scripts/jquery.validate-vsdoc.js | 1302 ++ .../Scripts/jquery.validate.js | 1245 ++ .../Scripts/jquery.validate.min.js | 16 + .../Scripts/jquery.validate.unobtrusive.js | 344 + .../jquery.validate.unobtrusive.min.js | 19 + .../Scripts/knockout-3.3.0.debug.js | 5475 +++++ .../Scripts/knockout-3.3.0.js | 115 + .../modernizr-2.0.6-development-only.js | 1160 ++ .../Views/Home/Index.cshtml | 8 + .../Shared/DisplayTemplates/Boolean.cshtml | 4 + .../Shared/EditorTemplates/Boolean.cshtml | 2 + .../Shared/EditorTemplates/DateTime.cshtml | 2 + .../Shared/EditorTemplates/Decimal.cshtml | 2 + .../EditorTemplates/EmailAddress.cshtml | 4 + .../EditorTemplates/MultilineText.cshtml | 4 + .../Shared/EditorTemplates/Password.cshtml | 4 + .../Shared/EditorTemplates/String.cshtml | 14 + .../Views/Shared/_Layout.cshtml | 29 + VB/MVCDashboardDesigner/Views/Web.config | 54 + .../Views/_ViewStart.cshtml | 3 + VB/MVCDashboardDesigner/Web.Debug.config | 30 + VB/MVCDashboardDesigner/Web.Release.config | 31 + VB/MVCDashboardDesigner/Web.config | 109 + VB/MVCDashboardDesigner/packages.config | 15 + config.json | 4 + 123 files changed, 93209 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 CS/Data Base Files/Data Base Files.zip create mode 100644 CS/MVCDashboardDesigner.sln create mode 100644 CS/MVCDashboardDesigner/App_Data/nwind.ldb create mode 100644 CS/MVCDashboardDesigner/App_Data/nwind.mdb create mode 100644 CS/MVCDashboardDesigner/App_Start/DashboardDesigner.cs create mode 100644 CS/MVCDashboardDesigner/App_Start/FilterConfig.cs create mode 100644 CS/MVCDashboardDesigner/App_Start/RouteConfig.cs create mode 100644 CS/MVCDashboardDesigner/App_Start/WebApiConfig.cs create mode 100644 CS/MVCDashboardDesigner/Content/Site.css create mode 100644 CS/MVCDashboardDesigner/Content/jquery-ui.css create mode 100644 CS/MVCDashboardDesigner/Content/jquery-ui.min.css create mode 100644 CS/MVCDashboardDesigner/Controllers/HomeController.cs create mode 100644 CS/MVCDashboardDesigner/DataBaseEditaleDashboardStorage.cs create mode 100644 CS/MVCDashboardDesigner/Global.asax create mode 100644 CS/MVCDashboardDesigner/Global.asax.cs create mode 100644 CS/MVCDashboardDesigner/MVCDashboardDesigner.csproj create mode 100644 CS/MVCDashboardDesigner/Properties/AssemblyInfo.cs create mode 100644 CS/MVCDashboardDesigner/Properties/Settings.Designer.cs create mode 100644 CS/MVCDashboardDesigner/Properties/Settings.settings create mode 100644 CS/MVCDashboardDesigner/Scripts/AjaxLogin.js create mode 100644 CS/MVCDashboardDesigner/Scripts/cldr.event.js create mode 100644 CS/MVCDashboardDesigner/Scripts/cldr.js create mode 100644 CS/MVCDashboardDesigner/Scripts/cldr.supplemental.js create mode 100644 CS/MVCDashboardDesigner/Scripts/cldr.unresolved.js create mode 100644 CS/MVCDashboardDesigner/Scripts/globalize.currency.js create mode 100644 CS/MVCDashboardDesigner/Scripts/globalize.date.js create mode 100644 CS/MVCDashboardDesigner/Scripts/globalize.js create mode 100644 CS/MVCDashboardDesigner/Scripts/globalize.message.js create mode 100644 CS/MVCDashboardDesigner/Scripts/globalize.number.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery-1.11.3.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery-1.11.3.min.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery-ui-1.11.4.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery-ui-1.11.4.min.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.unobtrusive-ajax.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.unobtrusive-ajax.min.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.validate-vsdoc.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.validate.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.validate.min.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.validate.unobtrusive.js create mode 100644 CS/MVCDashboardDesigner/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 CS/MVCDashboardDesigner/Scripts/knockout-3.3.0.debug.js create mode 100644 CS/MVCDashboardDesigner/Scripts/knockout-3.3.0.js create mode 100644 CS/MVCDashboardDesigner/Scripts/modernizr-2.0.6-development-only.js create mode 100644 CS/MVCDashboardDesigner/Views/Home/Index.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/DisplayTemplates/Boolean.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/Boolean.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/DateTime.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/Decimal.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/EmailAddress.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/MultilineText.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/Password.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/EditorTemplates/String.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Shared/_Layout.cshtml create mode 100644 CS/MVCDashboardDesigner/Views/Web.config create mode 100644 CS/MVCDashboardDesigner/Views/_ViewStart.cshtml create mode 100644 CS/MVCDashboardDesigner/Web.Debug.config create mode 100644 CS/MVCDashboardDesigner/Web.Release.config create mode 100644 CS/MVCDashboardDesigner/Web.config create mode 100644 CS/MVCDashboardDesigner/packages.config create mode 100644 LICENSE create mode 100644 Readme.md create mode 100644 VB/Data Base Files/Data Base Files.zip create mode 100644 VB/MVCDashboardDesigner.sln create mode 100644 VB/MVCDashboardDesigner/App_Data/nwind.ldb create mode 100644 VB/MVCDashboardDesigner/App_Data/nwind.mdb create mode 100644 VB/MVCDashboardDesigner/App_Start/DashboardDesigner.vb create mode 100644 VB/MVCDashboardDesigner/App_Start/FilterConfig.vb create mode 100644 VB/MVCDashboardDesigner/App_Start/RouteConfig.vb create mode 100644 VB/MVCDashboardDesigner/App_Start/WebApiConfig.vb create mode 100644 VB/MVCDashboardDesigner/Content/Site.css create mode 100644 VB/MVCDashboardDesigner/Content/jquery-ui.css create mode 100644 VB/MVCDashboardDesigner/Content/jquery-ui.min.css create mode 100644 VB/MVCDashboardDesigner/Controllers/HomeController.vb create mode 100644 VB/MVCDashboardDesigner/DataBaseEditaleDashboardStorage.vb create mode 100644 VB/MVCDashboardDesigner/Global.asax create mode 100644 VB/MVCDashboardDesigner/Global.asax.vb create mode 100644 VB/MVCDashboardDesigner/MVCDashboardDesigner.vbproj create mode 100644 VB/MVCDashboardDesigner/My Project/AssemblyInfo.vb create mode 100644 VB/MVCDashboardDesigner/My Project/Settings.Designer.vb create mode 100644 VB/MVCDashboardDesigner/My Project/Settings.settings create mode 100644 VB/MVCDashboardDesigner/Scripts/AjaxLogin.js create mode 100644 VB/MVCDashboardDesigner/Scripts/cldr.event.js create mode 100644 VB/MVCDashboardDesigner/Scripts/cldr.js create mode 100644 VB/MVCDashboardDesigner/Scripts/cldr.supplemental.js create mode 100644 VB/MVCDashboardDesigner/Scripts/cldr.unresolved.js create mode 100644 VB/MVCDashboardDesigner/Scripts/globalize.currency.js create mode 100644 VB/MVCDashboardDesigner/Scripts/globalize.date.js create mode 100644 VB/MVCDashboardDesigner/Scripts/globalize.js create mode 100644 VB/MVCDashboardDesigner/Scripts/globalize.message.js create mode 100644 VB/MVCDashboardDesigner/Scripts/globalize.number.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery-1.11.3.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery-1.11.3.min.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery-ui-1.11.4.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery-ui-1.11.4.min.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.unobtrusive-ajax.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.unobtrusive-ajax.min.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.validate-vsdoc.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.validate.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.validate.min.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.validate.unobtrusive.js create mode 100644 VB/MVCDashboardDesigner/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 VB/MVCDashboardDesigner/Scripts/knockout-3.3.0.debug.js create mode 100644 VB/MVCDashboardDesigner/Scripts/knockout-3.3.0.js create mode 100644 VB/MVCDashboardDesigner/Scripts/modernizr-2.0.6-development-only.js create mode 100644 VB/MVCDashboardDesigner/Views/Home/Index.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/DisplayTemplates/Boolean.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/Boolean.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/DateTime.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/Decimal.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/EmailAddress.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/MultilineText.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/Password.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/EditorTemplates/String.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Shared/_Layout.cshtml create mode 100644 VB/MVCDashboardDesigner/Views/Web.config create mode 100644 VB/MVCDashboardDesigner/Views/_ViewStart.cshtml create mode 100644 VB/MVCDashboardDesigner/Web.Debug.config create mode 100644 VB/MVCDashboardDesigner/Web.Release.config create mode 100644 VB/MVCDashboardDesigner/Web.config create mode 100644 VB/MVCDashboardDesigner/packages.config create mode 100644 config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c72e869 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +VB/* linguist-vendored +scripts linguist-vendored +*.css linguist-detectable=false +*.aff linguist-detectable=false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..456cdfa --- /dev/null +++ b/.gitignore @@ -0,0 +1,297 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +#*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +#*.mdf +#*.ldf +#*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs \ No newline at end of file diff --git a/CS/Data Base Files/Data Base Files.zip b/CS/Data Base Files/Data Base Files.zip new file mode 100644 index 0000000000000000000000000000000000000000..69ef1930d75f00a7914548a59cb04341359f4da8 GIT binary patch literal 226163 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 (4;r#SaXOQybX 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 z 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

UEHwJQ8JgRCVLSC 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 literal 0 HcmV?d00001 diff --git a/CS/MVCDashboardDesigner.sln b/CS/MVCDashboardDesigner.sln new file mode 100644 index 0000000..45f450f --- /dev/null +++ b/CS/MVCDashboardDesigner.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVCDashboardDesigner", "MVCDashboardDesigner\MVCDashboardDesigner.csproj", "{CC272148-F54B-41CF-8F78-5B6A63147F84}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CC272148-F54B-41CF-8F78-5B6A63147F84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC272148-F54B-41CF-8F78-5B6A63147F84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC272148-F54B-41CF-8F78-5B6A63147F84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC272148-F54B-41CF-8F78-5B6A63147F84}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CS/MVCDashboardDesigner/App_Data/nwind.ldb b/CS/MVCDashboardDesigner/App_Data/nwind.ldb new file mode 100644 index 0000000000000000000000000000000000000000..82c4e249257e8084b3d934729c4a16873e40cb4f GIT binary patch literal 64 hcmebFkMeN!^AFSYbJ7jBU{F8@jw!jBd6>d*WdNT*3pW4& literal 0 HcmV?d00001 diff --git a/CS/MVCDashboardDesigner/App_Data/nwind.mdb b/CS/MVCDashboardDesigner/App_Data/nwind.mdb new file mode 100644 index 0000000000000000000000000000000000000000..0bd45da69e358f009b868bb2ab8c804b4018cd73 GIT binary patch literal 1789952 zcmeFa2_P0-`#(Onec!i2){rbAWX+Z}WX%#~C;OgMR3s^~rAUjC5Gs3URkSI}u9PJq zDiwzwmBXRetu=b9M=haeUqPJXUVL9YCU zZXx_SS_lv!<$k2jJE-qk4d;6VX>3GJ?>l>ZJ~mV4e#DKjb+x@uvRyg{?w!@0IZ|tK z+U|p*-r(sUJ@aDks5y`9Fp-Z``1qptny(eBb}Pd*IjP$b_J`T_h+lZK=M)v+$)CDs z9&O_1jd9jV+4WL4G zEDfN7Dag=#VE`){n+Bmm&;asf0W2VZ45px5P=!yi66m0T0W<(C&3q1rrofluR~|4| zT9|?!C|jBW!3Qt_WxpH12&(wI0Susc%LC9-q1-K@WDZ9SGpAUnpe#rU7eaCIH)nno zmyB3kI@ktFRDnIHiWVVX7BGh+g#n}sdEmK%&A@uWk!fX*Ng&V=q8gLJM)DA44F(4mqoAk-h^L$#oV1~Em#(NYJ2R9iq=ST;YP z2Wsa)%t2ld`yuWi!NVH%L?cVpv)%peWy6L7(&fh__X7j0m8IKm(@GISS)EiAvnP!XO#uHV#| z$S*ZQ22zuw`H_HMQt(fYP=Q}+@Xv%WfL})VkI;c%dhpMH(12fB@DKVF_@xB@_~I;- z0RtEV7y}ps7y}ps7y}ps7y}ps7z6(W43OaR8DKR`!MFpCIxZ0EgbqUheshhRl!^2J zi3J>**H5E%I4;NTZ5@Qwmp(9ty*HUYSFxQhF|!6zK}{NZ>U9mnE}09E0K#N_AZ zz%2(&Fbp*Y136uEaOVjIY(a<@7{I{+D;zK~fq|hjvJ)UUoP~oy3d90zbQF>S+dN4B$hv^A~;t|LH#L`-T z`F1dY3B_m-a2mj&jsw4vkihi62JQGcW_Zg0o%1LE9cKV^R+<7RUVO)Z9L!1+ruLTx zP=bi)B>Jy;Y@%Pm91aa2TW|*W74YZx7=CX)o(0@v2mvd+uiy-(q4Cq*aFRLzon#IM zliObCgfi8_bocU!Y?_6MY8h}xfjBiQ`#X0h;6!#1xJv==V-Tj1|77-=3~)|IXp{Zu z7LvZO{JKMdwu9hr?uGoeW`J&>lN9`8cP|!r!~n(s#sJ0u#sJ0u#sJ0u#sJ0u#sJ2^ ze;)%RxX0*tQWCi8!=WT$PMv~IT-&#hkp1EJc%!vUKXk`O1AdM2iQejj;Xk}VfKTyjlusD`6ICq>fOiglHwDGAn-W`q z*FCBVUkB)WKu{GhhhqR91ukIR?*r}$_yTuw8sJbK1nv+(?*j(#yEu#q+#}eHy4Dk8 z<0XrI6NJ$?=3wOSj*kAJ`??E2u1nJWajeCUj1NQ1sDVo4hCAj6-eAp>ccp#Ft4 z#G6Lw4U1p*FVHf;Fxb}UU7FtsLnFbTWnupe*MFTw?Ec6C-x$Ccz!<<7z!<<7z!<<7 zz!<<7z!>;XWB`Zz3O(M@g#~^8pA6#%hCBvm2402^`c!%odTRQ5x+pqjx^J{sX}xJh z2$TNAG}snn0Am1S0Am1S0Am1S0Am1S;J=jtbc*6{RxbK)rvFRHsbc<8v_Fj$P5&=Y z@~1ic?*_7vXd;Nl-^^2X_wOh{=d=E%;{SPa(tdP47FFOa%~0zl^m?)V5ldhC#ZT@C2t4}Rd3I*@|jXfzfM-30+af=>rR@$WnX zK`<)(2kM|(0FZz<=pWbxasYAoyZ{6uypm`T6(BS|q5-xb8cYkf1T|m>TmFQBC=f;- zWoWv?))^AV%p8>jHc_UAzJ`Xz#%A8$?uJ%o-e?fjub|C_-UJ~IFSKy=+JTQnjTh{2 zHT8ES#G%29yv!U8eQjNxy|>!B*5X2yhc_&|=Ofp{S&UTEta=xPg?L`%+vm+kNl^TyNby4l{0Sfmxp14DP< z>$`Gs06`P^FPZTU)6Irn_zbvziEVe7g&Mm$`tNYY2k|To@^&{f#s~2J3UD?IbT@Q1 zv+{EFcV9;4s^5==SHbuDfxfPb>&O3_Ncd1&Q@j#^U*U_Bk^K^T`kO5@F2yhLZ+jLc zKG4<6)Xa<0)Xdk=))AkF;G%%Va-l`?#eG3|ksPmKHC{sKOpD`+ED6EK7RAfF4M9(J zH}mp##UEy31Ti=ipcL&JYX~xbcXvlyqEH+PNuuzb#nCX#)!!G5%z&4}j%2zSm5|~k z-u^pw77oN>(ZPYEL@5WM#7>U#2uq2h zMEf0S)NhW1g}7)ev~hmL^8QV9G#1)Qi()Ox1~oRMQFzJnX2emVR)#c+Sm@tIKy40b z6tp!c?XV-@D}Y)U5JIGxr~@q#@!2Ur5w>6qU<_akU<_akU<_ak{J+Tn8E!Kj9993` zLPAEx#IF$z-i7|pg5T4I$^QRf0FM8`!b}ALxCCaVh5)oUGYtgb-XSwB1mHFcGaUrr z2@Ym@2!QWBGXn(RK>%h(2*52DFs=XqJQD(LBme+hN0?b50A3-?Y!HA8Y-TP9fTKUN z5Cq_{0%lq z09HZ}0suDz5diQ&uonPc2*4lnDhOf#;DaC@0DcG(0T6&782~{D$^cjm!3Y4N5KI8D z27*Zd(BU9#CiI2}Y$o&u46F`G)NuqZ%)jpUqWjnn#sJ0u#sJ0u#sJ0u#sJ0u#sJ0u z#=u`=0EgoR<1+k0O7Q&O-yi{kak{oEz02O(_1;)BgW6XMulps=rOzf0F_@g$|ZEga~j%Ktcqh5P&)7 zIdUREXW*d(oq>k{oq-3_(Q`!ifjM*r9!k&|cnDDU0nnG`P}cwmSfD}(P#*yZP#*zs z@XWEpAP6{!fRhMN_W>|nKeqx(AXrHR+(f_w0dP#1Lp=+CW5V2OC;^TMbEt~}1foO< z>T3X873L(M1OiDSkb(d>FU(03!8#(4fdIHO%&8E8DiNqbK#$<4(A*(FbB6%UodEze zcL>njAy@-bF#>?*4gs1w1ZeI|0LZ~O5UeKxc?f``1QnV)1ZeIMsKX%OIzhFO2sDU5 z69V8&L8V0i>}Ur75_Yr$0QU-Zv;#nZb^r)aUku=I!H)I>2+*DY0ooIQ3kEyU7lR$` z2~dLe1mKjxj`joy(4GJR>PQ0IG}uu`5(rR75(rR765zPOj`kJ^(B1+8EA)l{9}=ZP zeK8>5B1%xF3@AaJGGLF=g+UPL5rIAg;MJ8>sJ{jTsJ{jTsJ{j|0I0tP1gO6T1gO6T z@C}(meK8;qhk77b3xNs%vP2+91nVIH{v&hpM4&(fiVy&glDQ2;phN`95C9*OIdvk~ zNCX;0pa}tRKbg}a0&ODDA%aa10MC>;10paa0wX-YQ6UgSfC}P>fP@H0A=nFoP?s49 zP?s49P?s6t`9+1g%s@Z|BSSz<1T+xD00}J-pguTILQj-1KoAckj6}dh1k6N$I^!gQ zIB2^=zy^aLK;3g7K;3ha0U&tO;HXe<8YmHhk;?!;+Y17;y&#Z)K_dXHBLW#BK$~&` z1flH(0oq;=pzSpY0NP#S z7h<9_$pj&o0>j5dXO#&;v^zqb=nOMK2;2bhG11v(f)Ko-053#mo@t^`)eAL3XQ64L z=9knRtu%MhH4WD$NjJj1Y3f(g5`0&D|eTjdOaG^*7i-ZeB5?mx)sHV^&;X)5Voiga~Bro)k z)%ci8`=`hv;X>}H;|3kRITmt9oj3@>h1^kx4uWtYckx9!7jj>_NC>=E@SPU*Mj<3e z4K`4$g!+aMgusaf9~1QxAqau{3SNl%j1Yvtg9R@{y;lfA^j&vQC*G3-$R9K`FI8NX*Qd}fNzvK#&Z&)N` zBgRx(BxENFl@|#)h(f$e4!%a5L?PZi2QTCz3Q=bnLOE9ug{b2ULAa7AM4f2pmK`!0 z_}o#$vd}{`7YP@72s0qRa zmQX`Y5E5-jDQc)0mQjb=WQJudp=U0@$`Y2)UdOnMCDc$eE@O!wrej>j5^AUk!iBn{ zhMFK;s5@$?3BrZCqlTJs8K0=3CI}aFqK29vT+oRcYJzYO z5H56D)KC+I3!N4<)C3{%#8-+MYJ!k>;wwcBH9<%`@s*;6njj>e_)0ZkI}n7#6JIH6 zsF{{^2Gmd!gbQ^?4K+cyPSB$^~9F|CE8CeDG^+IDUjI8qt75 ze{A{BV&K;>f7$qb>A0ToCGJI^QpbUz`R@(Mm)tE_v_l-?quEd{jOx){Wa%z8RR7QF zLs)4s1~3LN1~3LN1~3LN1~3LN1~3NxI~X9t9sT3+KMDL$Jp3VnV}B-iD*#*mvlv)3 z|4$f-FCF;*&Wt}AZ_z|Qy1!^%AKhOv-2XL+kB0r4w?}su&Df*+*zo^9s|#VJ#TdXC zz!<<7z!<<7z!<<7z!<<7_%C4qhx3Gkd~{ihlry?A(lVAYY-eC%sG+x`|4COy=RvoU z?kVj7+FqJ{G=tQ~sb#2(sU)eMQ@T)6P^MDIQb_4`lJ6lGA`c+*(WxP=)HWw=C)q|q zPJ+|Agp zNH8*}`k5Nhz%hX|V9`L=^~mB?7U2gUZ=2UZNGWmP8)^RwS%5nr(XbBWNCN$*@YZL2 z8f33xr{NZs(E@P-<#z*R-$JN^KjH`K!6^m;x8jg@ZkeomK=tXR@OAn?0V)OffXgwj108ZU&}ffXaHpd4f|&7#_r`E{a3B|L31z7d?o1c2sOTb`UqTAm#oV8 z`e`5}Xsg99WHeDBAm+cbUt>)jehXigV+{IZ1gMhXKSAoZxB_P}s zaYl9mDY4tE2dsgl=wfUxi$F4>!AJ0nKpfaan?V{Ew3nmrVnfgu{eVv@;y{KZKw}!Z zS_1TIH76DthZZ^-sKm3Q8jCM%&DFnNXl;;r2q=mN+FPKhfQ|Ndi+uuttM!uAl2~kJ z@QplTk)t(*27H0#LdI63TM`gL3j%7OT9~`0OBvZWk-p z2I^cvFK`0=0xDf>e~6f1hk!n`1w9uO^MypC2Hdh4zg?_Y6HwrSwomYHx|t5>`O8guho@S5l*GNod#&Lix2mpO%sd8=5#KEBT{DGW!Ce#ClkAw_g6L_A0 zXNtuufjkY+>?#YH-8KsOO-+7JIR!k;5|sagnt=Ch5n4u30dLT6Jp0t?*Vd;2az&Oa zUvAc4@_e?xAdA=ac=fRTz{}5~!4sL$G|_LS z7_Yz4;?zHfSge(HywClJEffB`)lP=J%M z6tWK4gRVqNg5MJC39K!6DIB3-=gg=2p=nj{{{9y**3`NM`%_^rOkj^R23ybLdWu!KPY$AaAP;l)1&rd0^hr%=A0eFI(N6-tf zL&$Eh5-(ElTf(J^2521E+8{C`DRSl6vRm3e`l?x!!3z#zeMdCWpKFe1rLZ<=Bz>DyrK{8M-ex0?bGU660TYhjaR|NML zDFeNapo~}|;ub112E4<|SNzrUpz1$R1`a=hvK{o|Xvv6Ms7x0q3j)0cTIt^&6%q*X zxByiIOEmZgRpk9th@N`6M|pt8_zNds_*^w8DZCE!9Yy;#aSH;X ziI)xdmW4(Ge<%fmF9X9S3PuLh7n^t@CYX9cYyX7|%mAEHJCp%lVQplw4p|2VB++ zs-6TF?sOcWMqt4odP|QX!qKCFuR1)bgWf=FDB>1KqyMa-{=sz~EbAXDCU!G;5e5x0 zZ26_v68JsB6$NA!Hqaj{v;>Nr3CGfa`qJtyGZ`efQ1q412SE{Sfvp553iKb(7Xl7S zAw&)w$tD!QOi`en1GXsmwm51~?UHFBX4E<6&xyUM;xT|zlM669e#mx222otHFN??{2f!ADscG0^AkX1q$+@i}oSRf#Sk?`s8Z31?Fg+UQ$b16_q?LT3O4ZY0r zS~yL^v0?W_k4J<$`~HU-+L-vOEP7mun21 zQvJJ&#@|%{=M(=0O8$N^5ai99ES2!Ttq7eD{kvNJB}(wquYa>Be@h7tcM#cZt-0A4 z_=)3?)W2Dje_8VQEhc*OG%KMSGrfVnjyc%EPdal^LAQc8;cC-hLmi-R8w}h4z$7v) zD-Ov#4PwxkdTDEK+2ZLR;vekkAHZ**t<4`0LYgH=a98nwS`Ul-*2%?g&i><$yp= z;=v1tk35=r8+pOIt#<0&)4B3?^`R?YvP+*)-ln2Ep)Y49A5E99wTk)8!G`(=ZwI6_ z_R|OlAWT%Ht^&b7g>cC9K2_DVg10GeBDh^IXsM9f##y)5@x;wDj%c0QhKr8D-403K zU_=$ohG^_g)VhRd=;ETYPl{L|=g5#9k6oPmku8$Q4$-K0FOcZ$=~Iz7#6C@c9d|An z;b(O_tb=%}AXlDQ9|3;I>ku|~qk1KzLlRkMu+?23xmt&yx#8%bMYm1qN!~s*MuB%oHD{b0uPbC>hxpk}5DzPR5&b4d`P9#p5 z8d7&7POXsLzn<~UmnR5vE}0$F_RG&*O$^0NO$vz>4BI6~Zc)q&Iy?8z4L&Oj&_Iy4 zA^V!=B&17MMypUn`_AR89w+m3q&*ipmEeAzQKK9=H{7-LO913%)A{4oot=XN109C- zTJ}zlw(gztxV!!K)}KD#_o>cKeS34WPk6tq!+t%o={I+ueBGSO^DKor#<}NRlHP13 z?ffk73&DB==V}{qwth2~z(k$QqhDlm1>?0+*4$s+GVj{gD=|Z=-Ybt>-Kma?OqRUt z;6gfSB+6tHa=UK|K_+Va@4OVFB8~Pu`1V=&{Kt(y_0FwEqTLNr0ujVfM_9`8QR&78 zV3l>w?H9kQ$^G>Xm&9!fo;&0{cW7sKD8y(9*WcA*(xP#V<_X%d=E?yru|rR<@`~?} zeyPE`{HH3~B+4Kb)w}+!3qYPfe!TNX6|Tj}#os0EQI#ck8Qk*v~)$R3zIRI4YGw*R`B+Dp1} z?dr>lD`RwXXrH@=$YdsQoXdJ1RJKy>sKWW7=Y^h(T}kTN4eM^d=c1IW_gN?P;GWjC z4HDF;E|0GXUZE>|u=1+)71EmcZ!XWSg_E)D-*lT=fh=5$-)WVmzRhMElMemM{5-_GOwy#cua?g4=bdzx%#jlhf3 z7JXvok9Hca7-Sk;KS<$rQdZOILZVn5h$*h6eZ78fO#$BJ;S zl9QV+t$2~JqQP>VqRi;Yp;L^f{H<)nE5!G(CqJS|H%u2v=N6Z?%rCf9@VbE3>WkH5 z%cOiqi@n9VR&o~o`P45@6j~KzZyB}Vw(!VTxg1yEaoOK;fAZEOs1@X&SJIXc^O~!9eK_6aZTSE?n~=8SIf9<^Da1%al)ohztF5uZ?sOKcq}jb zQr)H++nN0gnhl1c+eGy|lA6e~hb%fRUggo`aTu#9e=C+M@XqBvU!xO#%P(*I@o8~VYsSNf;rPv0MT-}LBgC`##sDZ1&JxK!`U2l}h>N;h&~ zeeyKtY1=9JEH#;S*`chVtoE$l${lvQ>?A5KS5&zfTpzHzWIJ9_>lbUMWSeVaW#>?; zTa;b2x~-y{n%q9#-U6uDCkbLD5}Y;ajoS$-|k`qw;?7z46q# z)V(+M9{Z_ANgvnAP{?b?yDzvbh)vmA`E_Q~>G6$w?|(fpEbU?QjOkg2Tz>`Y<2ChO z*%nzZ^gK8{s)G-HIh+u0bl|a6hPqT1_k&lBbpwVW-vS-p?r!;(omHB3ckFU^$+*I} z*LYmd*(dAIt~p~X7ySHQqxKuK!RC#$XVcet_g>j&s%^U8qkKq6+C@5fYf<~v%G~gR zDW{K|>XYh0XZzLrRTW>$zP8=|MDccIW94Jhd;Vv($M$MR3C+9C@1Ac)@}gJcJV@jB zYwouvnVH_bN8ncCM&)j|$?KhCnn%x7YqD!59Vj|5c&A9fv+=|6B7v!)lTFD@UJS8Y z_PuX=PU-Z{DdFBeI?>p;*sX^)CI%d~S=lU;As^n{qaEC<^F!x^&g(1>8B?VaNke&Y z^#ZA#s$GgV*5BCpK+4_rNvln^je(C5kCK#lv4Wq^&EDCuFL8a@eYE|NoF}Cl9RecG zH{Jajo5zta#Ui16LSyq`lMQK~G?~ONa~xeg!5Y3gktX6U?_Cc;>1KuI!yVeV2 z=!+ZgPWg~rD<2_zUoKZ-usTLG|9I_Y`pvJhl+SQvhVlE#swvmW985_*9;j6yV4Pav zG2-#gJ?!xnx7h1*_x%zorB|g>KJ+dmF`f-ETdOf24Gx z@XXq$V^2ySbstwe{qgMl7|UIjw<#65hm5vL^4h$syRuX1x@urVH%&h~`PxI)6jxNM zj#P;Iwwe}>ZOtg&S0}RD*n7X@oks`ml;gZdX{~4mWA~2sw2wKM+DO~>mOK48l+CTq z9)F~mt(!B0J*q>jXV)Niod2U+r+U)L@(b&$U7xwPxDUU3EqTVC;Y2~ky9@?D`p&L0 z`d;g@v2T-`x}`Ioigni?R%G;u5X`a-!c2tj{f$!#A_Q!BZdIfr`W2YbV2?gjx3=B_E_fD;%SMCZs8hPa{ z5YJRrh7L z|J41dZ@nC^_63RlYgH<;l?vj&n{AxWjb|<_iocH5}UPjY_J^WE( z^Pbyf%|J)fa#vT{iEe*3E1rgp9{!~v;T74h%sVQcuaz`l{iL~h z{b9zGXko4k@t%S*cj{m2%v0V?h*xL6AW%=qvi_!+>8DFFRLt=)j*?{WTWHJdCvU2# zOeHY-J**&ihX1XBR=oLrTcnaNYlQ3msWFTAJxrGvN#fSwN6blOPHA^E?)O;jJ5z% z3~lc9ZC2%A&3YdOu|Rs;a|~?!iphx6@;zWAQdOnjXEXxgsGYv*CH1aKn~X z<;()}a`7# zPmQ}sN~anMzc&t-tF5Dr2#D_W7!thXb*4+=(-nTcEy`UF_s#SAK2D&c)>M>w{YaeT z`Opw^p>0pR!Oje67sns*GS38==v+>{+i!i{Q}ad0vg_90Aop#1G1gs1>RLO? zU2GJKxU0*3ct4REtIu6jYo0srXIFJ5iHhu0<|#MzFQ2MKrQZd=FQ*~hTazs4#89{U zxR5{3-Y9$f?mP`Lrl+I6Z66VROii+rqiYL0uN5zh4g)19xJJB4Pou1wxAtkk? z#AwOJ# zS&+}WPFu=8e61F_g)P=b^^o+AoneXHsV}D0bDF!#^GJ&OXHPyYK2~?t|LFOfuh<^5 zkA%`2x4+jH=6a=a#HD*zakst&U;CG9JaK~!g-?2_8@f_ORqgC@Fmxb$??pr^%pQ$f9WcLvBCNup;*=xIw28bPvODfpOX0$2jyXyCH zo>;9jS^}mrXJ_ue{I)h&jx|H|nZe6wnv1?8y3+RC_Ze-xIVBYZ1tkRq6%7?NSg2@d=->i=>FMd{nBl^< zu;9qZ$*Cx*7-?u2*%%lY7UX{!%-=@9_ux(-pGd*eRV2(fQfAzIJyHdVjUy*MHU>%y zoZCrZ$w+Y2;8`*lgbMLLWH=I1atcZ+CIkm612K-80{Y|wIT^xCF2F(|L#ZjqYUUIu z%eFuH{52setvk);&Ory{gxTMw z$U*A;f~=oF@@83zJ8!kjgV>yf>S_8%gvQntuZnoK3CTW|1Jd*>#BAM87)b_BY4&+`A#BQ-_O0{FNWv&!Ee-owFI4 znUb13mbg*6F2YJ&Dr2|=+$0zmI+FY95ZTp)k{XXjd;hLnqkm6&?fZr|Ly zv)u8L(K@x(x7+r6xvOhzI$n~Vze6tSK>V7GAFW4ON481C2Ye1Nnl76hsk>Atl;+xL z6<9Db?JKe)7SXIyKA>!O!*#S^{ZQBCKd(Duf;hFA26>o@rUKctx5lp00Y+Jt623KC zZq3}iJhD~We#-mID!wG|Ri_G^_nFbsSF@)TP1&mfAmU=CSExuhgUfDV+rfS z#$S3UZc<;Lwe+Lc%BfB41+(@(FbW7xInwotij{Zltt=0{ zfce1~RySEyb=qS0-c}pA5aS=m>Z_%+-ha!~t69-jtte-0sHA=J!G)_&!p^Lw?aC_J zif}s^s>=`EG9S_t6{u2UG4L903EP&~b-$vj?Z$_%?*)t9U+@YG;8IlW_&a7o%L5a* z6H3a4=aF##^QR={g2a+345Z>(8m(XW#;|^%C^e-B*d~?c8SD3TWn@@t?Lfnz=_z%- zQyF{tJ8Y2X6US5c`oA?(nmw=jy}hvKa22!R6N~PWx|8u$yHfcjI^rhBjbb`tyA4~q z8q-8yn)HWWP~>y}uF^Rt{ndhF>+yPtO@XdG`85vL_aSUQ)4y(QQN2IV_dV!)ky+IB zx$WiQtGu6GZOxiB>r{)Jnl(;vxYl&!&ko;prytKFjYCPLd=fvO6qNTo-O4gDM;&=e zk@DxJTdjN%cc)JuNl(`bkD|FH{>i=~pXS?zc0Zfv`He&QO3vB6Ka8Uuo9Fu7_~9dY z&H388mZ90M;kidz&5|~9wXrjgVmj4aL_f>h7SVA?yq__teh}83I1qT%{o%KJC0Ac0 z3NVo6MQGI3R=%7WeeU+vonmwC_s^e=MOsc|sW7UXRc*Z9BV;Jjc27L9C(!l63kl_m zcJ*rpM?YUlDu0~S@|S~ zyyUF|pY*_VmHdQ@?&L^sZTq0d>xX$KN43@L5B!OJE8iDMXOu*)X_zV|X`D+fj+3+x zO4}_Q5#3(jDsG)=c_q(Md41`p?%7KPbc}Mzm4`hZb=fh`WlN2!_((m9eHyQ9$up09 zZQr=LuD*wT9!d89ruRCagsZ>v${C%<4Y@2_PPtWY4b1l()YAQWk(+OCgmA>33I3O2 z!}%XCyha;0PDr8jxwv@Pwb-q^|P znSXpA zsB^2Y+S}In?QZ6wJa70x@7>y%feAyekk(aMPsgUWTdgpP(U!Fx7xm$5{hHfzW({RY zYafpkayIhl8to4Sx-ZhCZASW%e8PS-@9jS0@MKT=wQ0A`jWNfxX0lD=j(PSaX&nt& zZQ=S;Przc6{Xr9fvPgyF3}?MATf}mD(e!NawfxCipWys9$we}0dQ)WRt@JQHrQW%V zHAdxY#0=~j4Oytor!q-WJhU7yr?kXFcgBV=7GGNnE1$;CAA1!2f)np1 zi0B+u9ezSBQL2_s<|EQo+kUxY%E9g>`%{_es%@7?jW?WBm9~cI)0k^JA7*vTak( zdmSFs|F+?#@2%n6X=m%wkHnuWbdI{@*yqTdJH7An%(G`VIkOyvWMejzOmt82jTDjb z-WzYLEoBw3P4RacThTEa;M%YzO^@#5Ywi?MpFLAKH@@?UXYTv_`qrV#A~#f0tV>p z?k!QV&&SruS$)vo9@&>Q);lK6-GBXDkiaVY;V{jPYuCu@x_vJj-7nu2TJF@?Fwqse zHP4sIJ5zVC;DPMd5Baa2D}_lO-Lt-tK{n^{PU=8$iu-~Mnk{wCoEPpEKHs(Jy}D9Z zrrZ>D)Au+5r!(BQuQhEvy8H1X6YVj%(X5_zY586O7elvaJP8?&9Ij4(Tp5+&?>={{ zs;KJIXl<9;)nMMcGf^@99}QU?5AuanQ~M6&wMOg=-M!m2n(cb>?hfY-w&h$~o!`49 z_GG<`3s=1LeNMqKp?*W-2__Z_4S`=FwLwuXg& z<`1h3UiQsxR&Lt5E;Uo#)oblpuS?P$IW2KM_pN~!L*ant7N=)nxmFam>k=;J>OJ=z z3!0fq_w7z=>1wr&RhxRl(y?1YUFynN0mGN|w>0BoCuhew?g^|qc{ASRR<`H$;Fm&1 zDMwjntxVq>tGj8MYqvD?o^l!^{<1$gxZBBaS*StEaD677P-iyYmep7gx)vV?5 zrtU~dd*!^VFKUAA&5BeGzDn#3;wjt5cxOU}=jnj^{lw9ueRsEOS)XHz9z90({lK9M zW}C{YyHk$YDW9)sdEx2BC&Hn&JSRk~LG+2*~LlaEK$Q^KMRi=Ky0c35vpmJ)v? zZayl%)lVdTJIA{K6Q#!K>FLwvS}#ZIwdrG7TQ_OmiK@6T5KNo)Hn97-e#4vHts+|! zr#OyLfB%%DbE3KC`o6XXUQH=B3@RJE%~W1H^^+8zgNi>%WP(&)P{zpee1$k9eZ-=DVgNUij=m{!RJ^aHkok3KK5Pn==~GQtPp{SXt+=at?v*u8nMJMjJs0P$ zEBR`ix05y~=hn_VoOzMdphnLnv3p`ewbUAhp=`sf2I2Km=eml*t-NO|R^8ogwfc!* z*Bh&Z+3j&Pc|9J7STFR2L}f(v7*sXLH4I*Fsrp*3=P%X5D$ALpkmIQKhOPT)EQ=qm z>sqkOcz)P~;JdL~S^hhRw|lJ`Jdty$!sml){c53ee4$1{Oids9Pd%C(O4f>+U41X$ za^m?lFOw%7uk~0Z$l0Weoceye_TaRMGrua!fGrD`#b{f1mO16+l+bH!)u($l^zJkm zWo^EBc8K-v>GNX5@jo1w;=lv)=)#F0(|()U^Izyqa(h%3^dA|ls*#Y97OTDROu2NB z;;m$^&Z-l2#mboz^T=g^WbSZ_R?WL-Cd0N))V8j$xB4_blDl^x>vZ4w+hPVOrwh=NY96xpW^Me_A@^%5@{`OCfKTR7eFPLPyx##O1MUsYV8)>fEdrk3# znO+Q6Qr0xLsuI=Ooh!VJUOKYfB6=PP%rFXWt0|neewHvS&yl}sjY*n#-}87W1xJ0M zo#wdrEXR@AwJ*{;wbpNbVNx%8CFT6q>s*(Wp7qc&H24k2rP;T0c9rB+*WK{Co_{bo zZ0j!9AGQfuE;fl|c~s2>l8R?@TANq75(e0ZgAC02zo@T@ms(wRWxy!%>HYvceU4kl z(hAP+u|9gdI`h8#mnYsc1vIlImO=VC2{Mn~)jEmvIs{;yU5++-{(H zJI|?OC+`KbM0S3Ys9@e%#jVA-z94NsN*^+*Dz8S9&F1T}9L_Foo}tdi zaChU$yKa2~W=xOTlD`O~TcT2;# zY(~6OAuDjZcvPT`v$*i9olOVFh7|gg)G3A7SML}4DPz*V^Kd61LLD>oqZN5fP&XgD!lrl1RZ?CyuOoO#4u!^JUHA}iaMt`Krk>Wy0b ziYDb=hDSenUaP;<4Vc~E{``fB@`1gsH6u2;tA*2dtpX|rrEgAd`f*&jU5$s9@uj4h-b{Y9G?+$`&(E2+O9^8$@p3K_=!q!yw46X0yi@{wpYB& zT`7Lyi+$Dxt47QIn+D=`R^_4^xg~+5j?rzmxCIu@5W_CCSl^$ z?y@nw4_>rMiey{yDh}Iyl=)&*F?cGl)9(`c+n=R8=2bHW%Ifwa2)=SXGO-A zH+}31#o5r^oEeI0nM@wLdwg5+y=rg%JSF$-XY*Mldj~O{PWzT{+qGsI$|2R;j~U&o zw4X@lW!rmY|2OhMe-e(W)SweX4lLcRB?i6UYE^p(Q$&i0J~4i65*6s@4! zox{y$xNj}B?){x?)(Rr^-gfgy&r|XCcI|!DYA1&EEGW6B6ko5`+kAaa&|X};d$|7* zi-tn8W^>flt!nB~fyNKww|w2>KlYlwyV4U$pw znv~hkjOFQUV^nmek z6m6`{%qHFYSzAuqU9r3H!9(TSA-OM-uk80xw7uPPs^O3JSdX6A$d+?sI^gwDmzzPl zl{V`2+BK$+yY@f1e*9CDe5ue%75`H>1Jl-fhV}}`NUno}Z{RkynQE>r!AFcAm^aVa z8Wy(RI@k5i)};kCwKBuCDoZdD~4=Glr(Be3~VTc;5D^_txB& zduG_EN$WjI<0L+lnT(UFYS~iQ6Pwc8?{Gps;pEqfSDatg^nBfSfy`fPmM3lJEc>N7 z$-;K65e~V;cW)mZ>ba=5p}By^P3L@h&VavByj6pivRI_|vx$<|rJ=@~%7aTvu6~=L zQ7n4UZB~6JcjMX*ugr04^0#>io-T;{aWHwW=t|4_eBT>sJJUK1UtNFD9d37nTQ<>B zwItav|I^rZx7|;+y-0R>z*5I{L2TT!FqL#lrSFsi&dJrIY8oxm0B$dOip% z9~!#0BASoGdhBti4tS^R#j?W45na_w{rwKB#`bP*9%^Dq7r3T4wY&L+yl@*~RzX5; z*XFIl^~Se{1atg^1RwQpKJxwskJlY%#tA-}3Nv#{x5*(f14F4}JSwl|k*;>>yK77W zw@msUUC-Ej^>vA^{~a37U5vxR-s8poLKFjTHq*)P_tc!}%$)N$6!~N3seOHCHZ^15 z(SdO1XK|tHdt%m5y3H!mysfT_w?BKzxW?3J5M0}g8my5Ln=unT7DsFKljWRp+5vA( z)wq@r*(Wc&Rv+yxIAj}WQgw*Q-fgX!0F`Kqg?^NxO%`5YdYS1 zu2!cgSK6Sw%Zj?qf3(ltKki9ns+(0@=tq%0wzBUAik0>qj^&e|(%$7vrSwPYhUn~j z8u-oG$Rt*F#G*=nqnLu?E9aC=yUCOC-VW}Z-foareP;S{x;~%JCvoo#QzOxla~g4L zT5G90t18Qp@wO@JbkdBsN<*4OF5X8RzUEBLP_IzjASr*-QuoRS&J|fF#~JpXI;!u& z5dFj9PTV_Px-)#Re$dqT z6&Z^&vyzEqOWKXB4~Ci?26L>tCw!W`lT$;Rd`D}7J}7s~OuSEdexAXxW3X(@NTz$W zp*k72_lLIgJ=gAwuC{is_O&kY_Gs!3TC<|~t+sZ+PgT?B4|l6JkY|VP$Q6A&E5?7| ztZ$^ptr!?Wzx-wdMCTW<~|`smC$9}4X)HspWQaMvPnBrRUd+qt`% zH(c~{vEX3V<3|Z`N93|OKUG>jvmUfP;S@I3E3C7rrK)z zSnjS&OsOHumb{d~F|u=ZEvKYm@lehdPjpJjkoU!^xkAx6lq*?XF_Sk-o|h~#iWLM zIo_`)`jp#?1iN46RPsg!iatJX(mY;hpOp3{rJL*VzVddz7xYciO51!}Qq#gcPox<+ z_3~C5vLDKjp)zu|9OeM8*!AV~(cGc-#CpWk!|8rV%8#p;7v?Id6oXYFl7@J~yy*m( zm1wvvPWEInMUSk~xS^G%d4rmR|D{B&=j)2TR$CQD*>|chbGkP4@vRtFUwg2r=^bm5 zyIh3(=QZ=l7N>8Ux1C}Txb(=JCF?@a*DYHsJGbpEwq0@e+SQ8Ywj&N*yodDU>-@Y_ zJ`NUVmPFhNayZ!6sY=0N-^r6@K9`)XZ_k)ZubO*K(ms=_+dEsW_2yZj2Z4t2NpA9! zDYrtAM3qPLpKkUy%e&Z8tN!TVJkr$lN-2`QR=wyJxv7+N z-Kjm{W8sNoAu6X&UcE|wP$G#hLjKrKIj^y5X>+NJHpSPE1HYAWHqLP0+pvCJ#pzQi zDc_AW%}*O@8Qs_>P_{qtZRE?sJtw&Y)0WSA7dYGt66pVrAOH9N zOP*@L-$cNEF$Vt6Fz``oSLLcfo`6e^qO4*!FVxH9|(tFWl=XIC=A|TgYr7gUw{EuabW2VDDDZOZ8g2C~<=; z@@+R~unfptXoyv6d?vG+k^K^I02namQKoO}y4WuIXosP7n+ zb*xy$`fB6FAE6$7%EkG%G#t|o<<^IWCi^5y-hI|pVeNbI^DRT5lX9Wu-iro%RI0Ag zq)SV$GB0U$@7B9Y(dqwLUhijZ+|bcTwws+S{m+~$G;*eVm68OGR`3rA_8X@EXd(5_ zeZiJU_3WB8ALm9WE5=s;3h2~QPNf@_kK9AR-HFg! z&z!QlmgZ+bWy2xa&|pi_K!4AGVh&HF1f?|{O9~m0BzEjs>1aGq+XMQcrbsk{@7q#; zh~m5={e5n)ryz29N}~NSDFJv6*|s;aB|X@B30QgdIiQ`kJd$dMHYl zuR98#V#Y!$V@sX^L)OoL!tXl+N$BpT&j5raN8GG%ZLMZBQN22(g}XSOY7GbruT=#+ zUW`)1)Zy{MJB9R$h-@6^Uj^%lb2=CD`H!8wjUBw%vSOMln~oIpo%0rTu`6*5TQey# z-VD8UpOJtn?jL_Ft!b}6jIsws4)R;?h4)^f(6v*r?u_jnm6j#!%5LWu+@z#Y&lS2w za{de`s->k&|qeZL@2bE^PbhwPSe=^ok>x|{~v#NyX;%` z9HRuWj2Cw&5cni&3(5!CW-}Wd>`U49d9Bk{X-JML8d+P^iNieuSPWf5-1NjsFiwi7 zI*hVAKherb;g`|nda`Gr21#Sb&Y%BCQ>gr?lh2^Vw9fu# zc&=&m4zdEqI9#X1xF6F`$P#Rm!my1ZQ45x3i_UDy_^cVixqdt*Vb|$SJ5X z?|lehD|-j@ymyEns|T+kz7B6ArnJAyVb807a8cbS;mPr>Ap!@zvxXsHkP!$Jo-`-D z?{}dU$vF^|pl{+?Yp9g7t_&7$-OjY}@gmrs;=>-Qq*GF7Mu>->5H=)Q#uwd?z=dEz zb8w93^zQj6nyx+j*nqWZ!k2`_%f9qp-H<1Lxpk1zWb<CqoVA1E|0KU z=d9JC;0!>@0CRK6L%KT}4iY*l1U8Ga39);(Emu56eU1iYxoB{WWCf?BOe5XhH+oUV z5b-Xrb$g4xP5a{7=>0zF{Grk-qDvyOa*^<#&3n9Dq3%>m2l$?OwioV04{g*}vxW}m z)guJ`R~e~iNyx6kJD95O6rGmg;nq_PB-1e;$Gla=o*=0)?CmwV&FD?J;#mw*u@QpLX$N@DP7-L+?tbF zWFtkF38$%;ZA@96k6*vJ+c@6R0v@8x>=!j}=R{r*s=5Wc;0{NT`E*0~O;5w9V{! zc9S(5cQJYC$k0@#_FeSe2Nt^^x3?<_s$t+E#gkfqS$`pYB5tCZS`VB46Hx&^`GFI2 z$gw#zcxg#A;XDRD7(S=4{r-qwz|bWUa9|D;#u_@tAfwHkiVT)~2E-I^(ytROU9c}k z=xQb=M$=x3s{Qy$Qbht(v0f*8`<_g9a*Ova(n(ONyMTNs@6Ea+A>ygFeX(X`s-P_u z=eN<^nvZCQKISrhg8lE=ehk;(D}0_>=uy2?YM^ybEabhg5e0RU^e!-4p$St8T6?^8T9SkR|c8a9u)|jeC#>GaxRcVsp_u08PzwVu&=A#n3J;AHg)g?P1!m zCrBV#H&J5$4M9)z-ME%rXi5oh?orv9ZfW>e+P+#f;|Wv7Q^W2dwnGyfBPyz~@(Dq( z$}y26i($;1-;4t?S?nwCl#)CkDaNNZ$jA+F&8?!)Y2tNfA>FBNsS>(#t7ko`{OF06 zboqv+u=U7#Sh3iHl5N)B{p}?C-6s zvK%ND#%1Chlkz+R$nVf~)y539mBO~ZMa1!LefhYTYeqKHVTKA09wnn4??|yA`eaO- znJ_lCFrf(krh?F14ITg2pJ-D8)VLBdI52Vf${3N3H|-%15X=GgNdwf*;D|L&N@_OG z00YNDd8DCHYX%txP$ZGMQyWu?!b%LF=E!nSwLY;x{-?nP_Z!?pRLbhgb={K*&B%S6 z6vrYCop%wEIU3s5iMhzNahrtmL`F-#M+fSK`=+X!pjEmZ?O#g{JKs8yqLw-J@g9V< zFyr{`k%CLlAb8nd^!469<}T@@<=se=Js*n;E((w0nJ$@bTqLcW)yfe z#_yIy90di@>?joTW{Go!a-k&oMC0};1!EEdlopO!Z+79X^V&)boI;F^+(krU!kfeWb3^>c9x z^4U|R$l6cXLdrZ)vkQsG<`&)hWo_G95r=z(l~ zH5F(mN=8IPbx-kgPTA79SF)GXBrLLML7Qz)yaaN)U@!FZ&oWVR39M(pTLJ*@etr4B zBCF&HP{lDI?62UwX~81CHCPBNjSKOz5k6kA3g(8WM!_$(bv*-W^VLA>{n`d?t5x74 zNsF{#GnM+OuDq1r1fZGcZ3}CWEQsTwIH^d<1yh~LZ7Wkn=2NYnPs3)NCc=6tvdrdP zjG?Zht?<_+PO3Jl^krTVr$U+PQERb{kzOXX> zIiGTQxiRPHS~Gtjn=FWA+74`u^{hCdNJolJF(BQj>5`8wSu3wLhZ$80pyG5a3;I!6 zJk?jArqoaUgnDqLqNX7x(~jX{k>)kffVnbJ4cskcnLWIcFC>%Jn~>Sh&6NZNpCUZZ z1Hiz3{1yNI;;BIaNZuK}{RFK9(fa=z$L+uG$iGPw@WSbV^jDeyZfmhS&<`v}5p_o; zTN6hYeV{Smuf+<464v^r#)`)JMsD`~#vt-2aJIkKYYoLpnV~4420nB5lg93D`MR;P z&@M>Iz(ea%gur2-X^W#Z7EXt&p9a)N`BAfP2tp}PIub4DDA*Tqi)bn!%8=XAmX z2w6%d&yq6FHf*XBeBwX+2@%9SlytHD{B->;Gj2oAzmuw~kbfwfof-2m>1TVR`*)c) zim_E~UTfuJH{XQk9IQVh##=$o_u~0}g7Ize zwRhWNG#rfVbWDgE1>}L=u1sE8Zz#=Cj&o%FVW`Sx#YPp>$}w`~M4COL0w#up4y7w| zyjf}sF3}GZ2-%j6#3=G6e&NqSbZm-xJgZhyvDW`|`*Ii4DA*GF0L_?$=sYp{W>p)p z!1fW0W}DfS#TiYxz)u}cek-sPCKV?*+OSb=nCfGpuOKyIL&wMY)0-R5QirmY2V*ba z9=6aaly`n=?1Clzjzd!r&vtn{AyGfH@+(S2*mBJIyo)+gK*GlKNxkFgKmyl#_&344m` zYr@R(;NYHWmYa3n*`;a#)~gwchS*fB&0Pi-YuVEnRH(t)te^%50{48!t`{xc7~dwAmIPrnD#&OW=NOjiMC@-=Q;50`eZDaP(a4-FEIpoF>IQ?`o!4e+ep9+%Hi*`0f!=>XhAfWHBJ4w|{OBoWH4(3d4R#wEh{9uD2&Hz@tZW-{|I-V{0S@MDF;Q zFbk5x=RhtQnMi^nbW9k9_>f5oT_m)8eF%tIs5?=EPqLF=(-b`Q*MN1C0~A zzfOEctJM0eD00$`Ib;p7lqnral`|rCDc;Fo_HL&%m)w2v+e8*&PSAKlgkKV!dINMz z+K#~Rss{fQ$NfPGhfWb9C4uv>oxybX3aF+&29Fbt#u3Z0;8_|j23VE!j9t32FT4t$g0Quf zVcwIusb0So{{H=06x=-py^`5&lw!8IFnr=L;ai$EN`{_kxsN|l9;w8XH~Wy1u~N7; zR)CYz;kI$!-c64Mq`#f?2>P$lNJXQi-77J9@MM#gfA-6ro3vgFN?M z@bmMyz;qup(wSHpKQw;bUQdY)8KbkY^@OJfxYnI_eCjKXI8P*33UD57BSx1U*@?Rk zksy{2U3mG>>0;ER|Cx&+_s_);GbjhTL-(|CPh!wU*2-^(qY47H<3A}!wfA)W8mS2` zooi%xLgP8I5bJT@$CXV%-&J=#gAp6FXJcOz(iJwfLdY-Jfop+CYsyCX z7}46nCbL8|2+Op`!(R4QZAeYYt6U!>l_JsUcy~CqQun@;>1I7 zGvZ3ds#xdB2R4lWcQ;u~Ls#y%LPHs738p6HC|?DU&lwbay4&R?)DpxA>5KYM0a`U^ zGRM&ML0m|uLw+0c0&**S8N0MwR=IdZNdj>K0#spa)D~LWW_#9RmU`S)R|7HL0;u9S z)hyTp*?PtXmFmhwr|8PlvzggNSf+Q}YsD@;o0!TXqEz@DGk5Hyb#+^*QB)MS19EW# zHeAJvylh0q zVcv?XElo8$l(*x84lpW-ss9;90DDU84efkR8;0cwQf5MbBcAzW+VB-yT?Dm>A? z_+4AA9%;2k!lmc!%QevFg26t_uYvYIa}9j@`x?lJmXX2%J*BLsB=wV`7>4~A&oV$! z&{TjGv0u;9+50Jip;LeU=Jy-NS>tE^XZ~xt#$Sb~k^(fj^7&sMSCmt8+_2HdE4(mo41=>)w^InA-6$~52F|TL+ zjSEZ~6ccZS;tp_mr(OkH(5)-Aj4kyxji3!9E-teFf+#)e7nwNa40oyaOgJg5KRWCq z`47?iibmz1b2W!d7#=O`yG+7;D%!`rJ$6334oS-` z-l)_5TOFECZ8!dlmP$08>QI(#Y^(%Sh%Vt94XecLnRPoD`I8X4?#$J&2b%X1!hGkM z!GmkX(izZ2sN4?7iCJ7hTZZ4^G%;xvqwn*|Q=Gp22vm~epUgLvfyhq6RW00>7o9 zoHabc%n9>sZYw~ZS+Lhh+NLmDGuLo> zwtDFQnI)PV6jIgbnF+ktWa8tqHU1%`Oz2QD;@p%()nYS~;GI^q{Hzg4NUz&~JzwzX z<#4dlo2V2NB9>=3Uw}&ZOOr_qc9fQ1&J^(m>&CxQD(PfpVHjQ_WhZCF6F$ij{DV80U!jF9L~nPN%lu#zZ8s=$=IzF-xyBT^ zOr+@fvA7}ahkSCH#BtrBHF-n7HT#y>5{TSRkFE$pB6U;1X0!>mM$NmQ3BTLqlx>R? z==SGL5&YP#BE~w6yXT)Hdi6sX2KR%+sP39{xF$2w`BJziPsf7 z=QB9ROIuUEU?_g$V zVe|=>OPr#7;a&LaL2EP)zJKt;;pbr%NTw^ep*ks0G$C?nk8_<0nAMQk z2K=11Q=tl_$?!twf;0Bc(EDkcEEhDGHJa6#m;N01g!Tyl-|kwr%WBZ~UoLJiFm{B0 z=Kmo9lL(0jKm?f=YQfj?ioh!ZuL!&%@QT1I0wO( zt`ACu=K!Dq5dK9AuMgTJ2)5v9bcM(#OB7JFE7;&F2=@=ga&_Ucz#m)>(^g$eP>&s8=-@~li^EK zps|&?gW1bB2fIJk{%U2c?_g_VZe!{I+7~q2O=tu(x3PS&VQXSy{L{kR{5qL%56@ga- zUJ-aj;1z*a1YQyNzZ?N*zzZWE$iXt!H?g%f0y$1T{~+?05ahFg+$xZ3Wdd^1oasSz zEC9d@wHhV_fFGRh@3z)2)2qyX%M}1308Ric0096E3cu!q2E1e#e}0k&+8TkpJ)Hld zUl?c((ryBDGI#vThJmrZ4WXeE(8!w>v=fMh;>FN=kRh-?hSpyUfjaRb*96D{1OaUS zVd#ZO?fFT@Sl^Le-qy*=5$J~aU#!UkjqN}I(?*2Wpe7EA6rkqRf2)EAnE?DTf%9Sl zL>TsBLK&1=ga_0Q)PIfz>Ms*wKz(x?2YR8uoL>hJc?LfO7N`PLg2_Rf4}b3*4-Vjm z1QEEs6#W;apt={Oq5v+CEn-kg`ab}@B%TMk(E8>em-ug(934Pe)qOzXzsmEIkQvC` zHFkgiWw8U0{707|{%C*m9@KqMH(rVyKnTDNI<9|dhX4sd8f@AMB4p?U!zV zl)fBj8wdcfKMLQ0h5`T@{1^Glpiu$v0m%O-d`VIddeLC)Yzzbiu{(gqo*(c>-yRL9 z4itO#vfuK{DE-lA{sJf{x8I9g0Kf{M1Q|v8Ti-wV|6Z#8mH!VHG&ZjUe6Iw2uLOLr z1bnXqe6Iw2uLOLr1bnXqe6Iw2|K||!L9zcGYhIn8WraJ9)$46)t9wFzMuxL^MrMM? z{kGOWxWiZ62bR*a{pAfMi)GNPcyX-mCr649peU;`k61dKlI1@zL`9tPBw;J9P& zALOeWo0xpa(9=GDPb&NzD)`j}K%hQ(Wx^C{8S3qN8@@vb6G35rd!2aE+dWFa*>x6; zuy?ZD(YJ>LzOI0>gx}>?%14hDO7D3(%MPb9CIc4jr1N0nZhG&aClglgGMe_Swr4C| zK($(=w#JrB?^`!hXqNH8no>#F2R*MEjYttceGieRns70QRZko}W3F_iRjW#$jALnA zlC~(3FR0HSop6`6*AGpzf1%;6!hOp~$*Q4S^ZmWCPV0Fz%5o%godcch9z$C*iqZ0W z+}kY3oA%4skfH!YgJsmW<8bnNi`_Ry5y}=MgVZ9L$p;#`R7$$A^`^fP4<)t9n}KA> zR+j5aeN;dFD=HXhqmzzz@-OdfBOlJDgSD~COoAu3#gqP=TI+V z_WZ=g9tm4dvUzIo#KE^&ea?9Rz*vG!XzXBkBI2`QzqmT|X1__lV*yLVxv=Ay!!ya6YGLa(`nNFZ7)UkvCfW8zBsXw7;uR z^4S>gotLu@I+CCyMu|aX;lVF72ms}Fa@zsOf&P)psDVj>9ZD?hLuRe22G0hCKk!z3 z0M{i@E{5lp-mjYxIYEMDM%GG+uhNS^_XsdyZ^L6Y;8bMdJ{J-AgW77bn~5x8FG}3) zMz{S(!SyeTId;E7KuQwdM60A!e&5{H3IllEw zM{4~Lb_+2p4m3L!!d8k|_(mKi#&M{G;@`+sZqmvx8SK~w_Gx}+RW8y?R&LSj^TKg1 zc{SAH?0QADP{`}Y zQLtkpNp+sPkBq;Q^1IlA0?M7l0U8X9xx!BkFbU^lWO4B7GvAfLq=K+#MHV6GASPd z6ql#iuCrMWN!@w z97CDK1gDj;n#oC&1{8iQ3a}qHwccpc&_DT`KaZ07Bs(!tw}TB?T(hk`w)t4Ffr0h? zEB+r0F!%DJ;I+IW@QT1I03#SfVDqE19X0tH+0~Xs=OS+KiSIu?fgGJD8gXwc@2OlDJmffBD@EHmOL1NWQPDG zVJAaNHxN_cOBjYINOTN%|5r*qfKfY00`|NJ_yT~0cqyPQB#7}I#Cs0~2?_NE1{(Se zG&BtCOMZ{HFtD)iUJ7Un5C85R(n~@8R{?{Bf`WMig8&PQfcpOZ`+v#*KYw{{2c-Z6 zBmhn!z>omoNMI01V9#BEWKg%kpuk?@C;ll=FWrLy2LlNqK%4(m1qKcQ2?hNI5daPb z0SSNv9RVabI4C*rWl)y&U9Bkl(V#oG5QH0sqa(nux9#UQ!A6|9h3ta4QYXr60nFHa~=jY5(TiyfDO2Fo71&;hX5Nkq1$B+=hEZ z0te>txs9LszH zw(`OzQb|#tL%oL5Od_Q=;1_n$^kg0nsuI})v$_mL_7gi|zL*)FQhOL)-ijrPqm=-K; z6ZQ;12V(03alNB>$J;qft=Gl~v1~EjX_4Zi|6bg+h0sGT-8UF_c3(AJBaLJaC1FR$ zAs2(^)*uh}5T^4!8+fz$_@N`n7jMpUlpJGI58OCwG~=2NqV_5sB7UFeOSC}mx)e{R znMT$?j7+7WY`AA}CT|TNLHn#Xb3&PgQO^eIGa!&V_m{3y`aI3YOir(UlHF|ZP|`ft zURAbLY|roho7Jwm4fV}EmDgLItCMRw>Whz|)%GneA))d8@zR{gozRSJ6Gz-;0{8+p zt3G8vwt$wQ1m2zd+Nq`GFHD+@5xd72^1nDf@Kpot^-F?7@$b*c>f-Dp^Pd4!ffHnu zoI&BiF;T%w!_iyQ+#XZI-UU~qa#($R+XYq{*z}@pzPbnOVI(6rvB%|Hp$EAhycXtU z*tAu^DZ?Rk?R*+uBlD-r9d1-c-n?FWp^UBDzKRxJJtmIzz7+d~v#$4(<(}Nlp{`L- zPWI<@y0c>;N#9}k7p(^p0XH!+-IN9zw#VM4TW2lRk)eJF(_#ojka>hr*c58^)`d=7 z&sYq|nsT}bnSJtaiM}quHy`|B za1W#xt!)Z=3`fhw(7-=*(snT-q3pwe(jSkE!q9)PAZXIpr9QiD~ z?&`t$5!19kUSrn|jzL%fs3x^=m%JK0csc1=o;Vd>Fq*#Zb?V@TMY`cx)A`8ru7`PW z8-5aL-F0({eq*+@*PI?YG9`4&oy~sNy^NA3oRVy7z}d}c`BELCEHPg7?S~3ZZ8~n; zPnS#f{$T)Q6DdP#4G+0?yYmW+s$h3|v$1@k_=QlHjxms-7 z>c0Qx>XgT3UiL7%8TkoRhLY}^0P^sDmt=gxcsSU3?8R2Qi5fQN1v0VlAH&z1pW4EE z!`{A&a~kW9`pC{BPL`TdyM`5+G?n5}Q?xdrfyQJblpG2E*4PEM@Oxc5g}ir~Y8}zH z89F)_=f2SBZDT91Dij1UL}b$by51+o*xMSX2?KRW>3XU6oUkDkBFJBa<DRJacrlQ6tJ^v}J%S5kGa9_+2c3(% zhjuQ~)o1#Vk%jGj?T`@70JmzhDx{g%{q$YH`g%zeSTYTXioqlSLIn7NH9qX}7}JL# z8ptZ~Nh9<(?l{p;eqYeT`v&8NGJTz==n8Y(!r`lLr?u!3gBw0(U9qR0#PklBpm(ha zG&jVM`KRm?wJmuW{wyvcs;X>ElstH(2eWgPR*B>%>-+Ss5@~1nX}VBezRyDZ-~BIv zov+2z;RJoXnDJ@%9JyL=nn4Awnd0JGB4OEU^c=cDAUaC|mY{l+~Sjur_9+zgWY5i)umAv?nL*ym}SGB zNbzQ0h#N1og;4TOEhj6|baj3^kQxnd1u(zucBh)xKcIPxZtFDLuvTfJhZd1p0DEld z(}sXC=N?~%W0T^xcj6;*Q*Obws1MA;6$^`m!zIFu6#!|N%m5o6+Rx3%DmKcS-rMpY zAoJPpoNxB21e9DPQSW;nE8XdjdaZxzE)HJ3!(Z&% zjCWZtH>Q72&AxaSC0LclqGk0AI8ux;YI#2xh-tqe&bX=mJzP)>^%E6UemRJ;4lPq@ zxuYdADE!|)KY)!8)Q^~Qf88lJ{yCWVwoR(|RQ$AVsSAEQo}_bAyTOI6v?o{3kvqW_ z`(_?@mxK<9jGZT}%g+k7fx8+X`#@c4z5*t2(=`Goro1m;gr}BS`lyzDMJysrETgBu z3e`QU1Pj+w%U|0y1zJ0QO(dLHfQl)<9-EmgB-BmSHXvj%DMb9 z1>uLliW7Uq)QtB<`3=%sB(vio<(hEc$dJ{?LPHgG1B15Nno!G60;kzm4~pDK;p~;m zu(I}*O}wP3J-^0CIgyR|QBiDjHV48#@mwuD17Ht3!wrhn3{(`!&K_g0v`8p7{Bwhe zBDR`&5=pfYxT)nf^9c@g@U}YisIN|rwC5JjZk8hWa0^U~2Kr)cMw=w0Tvfgx4c{AH z9XODdC2xUi9_P|-Hb0UscA0-h*6KYRtGHw|IsiAl=*eWjaoef|b9(#{(&zpe`RYT!> z!HAOk-+ky(NT|RX%GqZ%hvyR|@Cc4rDrKf2WBMi<(oRUyy3&evcXcppDPtYDN~F90 z-RL@u9y^o(antz-`V2O!Z|-sM6|itR!PV9E)+{rq_ASLShsM^<5p6>!?Zz1ub0Hc) zypD5be6TxoQfu#;y;aQyU^1cKGWKzo76EYyxnoBv?cH1i(Ce3EwRt51pr__ed=)V0Q~7Ox+ahk1}NJ zshzj>TNg{Oeb}#*2nL4t8}%b5V<8JyH4!!-F;z6B@vuVAwvfRPJG9^?nnmNQvjwOr z6JfuE`YmcmFk*Z<@C4zn3eERWfjYyJ_bag0+1jq^ZY%YREHoc6b1xG(0Za@^L-@n*|Nt3@}wdq$-31b1hT6tm?97)q!0 zXA`-EpL;hu;5MJwFAXVz$lbJQZ1BV`v*%!#cbdD|^ zTO&2n&fr}mKt2RtgP#9I!WN&SXCUnZ&Bfr=Qor26omYvnHT}SS=X?z)VXU! z^}1~Rk_>*;-QKR0DRD6!eZx|6d|s+w<)YDG=OPe~MHQG#EfW6^CkmWBdbfUro*0*B zDIkcN4DT$u1MHDo8)DtlgT4f~vu)6Ati|EHI06&<{ukb4{2@=NEl#>&GKV22H51)L z;c+I46gZ7sM9rEzU!(E1QHwP^t+6MP=6sd@>{KEuR2hjs0-0}Y?+E>SX=@aSXMn!t zlM1{f8SePZjZ*u4Nw0mw*jo~-;O{Y%YEy#vA5_>ZBe^aPlM0R7jxGJy8*Akhb~t#M z31CdOwl;te*l5DBRutn2A`2|?o1G&i(G=3j$wA1@8Z)?_MKE#wD1vAh#v>^ys&(;& zzFD7XZW9zMy78s9=w>cWaK-|0{O0g5dVUrs!K3!FG5_QLzj(y|ivK470I&^_B{0Sc z1Ic4V7+X_Hi}Nhg1R(gSMKTr7d1a;9xbbEjV-8Q8!c#T3ZP-Hd*_PVUgr?B!Zc+NG zFV=buM#9EoYy|j}K!mBMcX2mvx_OQ4h&o2V)f==8tM0pbACSj$6rg&I}1gJcU3$Y#(iAdtks3`Gq=`AQR7;ytFDTuS;Dz*YM zyY)Z|&_ayV-y=Z~>4<&rGEI^RAz@M{$mRc%od=Oh+E-R0% z55?w_=Vhb6nfg_)Xj|eBD(st0Tv#e3AkN`&@xz8RrVPNt3#P!k9(h%ZJ^ceK3~Lrb zwYzFO^Q4+~$)v08cV=WoYjQ zgVh!z2zbDaJ9kK^1PB8>-27dUPSG$li7hTU+wvXiQ)}Pvk-niLG!7qsV24AdvjX4~ z&hidTC8cHhs^ODVS;FkBh>wf3{vhuv&2h8Tw2==mt8O1cCa4fo6UF@OeS#_I4IbrbjT#s_VlS!2^Ul!rxOBevE43OTaM$)!NNxH1u=_f|+UduLb82n6J^7=kYkfLo;+ddc^2ka=J9#{rRt# zLbMkn>OcE9kb2q7!dqZ|7*td(@^^vrvr1h%w=Q?|;^jT8yy1h4wI2>#TpI1p;)qvX zB9PEdF#fQ6qqdEkilNc=MrC%A)WmVoMnMAg3~y8x zEPvZtj_%tZaLPda${XE=SAY6f7CTsCx%ObODLb3&32!OKd$=HEWy(I z>9KvyK6Qnc7gi|xr}&x_r-mrM2*fm*jNj4BVm0g8ZCkX4v2MId#Xw@A*JrO4aye3F zrF;G36V@*GFRmkoiEbPbTJdI8Gvd>A!<3Y``Hca{$N@<#Bs;9T>le(1+s;j%37>CA zk0w6#Bw<%GmpQo6afgSKZ2{LiLqw6Xx5T5Vxy?{9h_@c7k7+;8YOzFA?v%o!NEyiE zXsPlc#2dQzd~H!v^gHIohV3WbZ8#$u2+r&aCl3xt=2Ye)=wby07sB=zwDerT6}TA1 zMsE`7HY^$n)<2BmVfWy73ik(C#eTSBIJYRuNs!*8>+N^;iXH`iWUkprwQ&IWse9VV z;ASYwz|EnHVHZ3IOlejf`Wb!c-%0+|ltqm<-y%%bv(Y5F?#-PnfUIGBfd!9Ai}pzH zgHgYxHpR~hy5#0bMR%Mm^pnOjVsp3n@IyykO<2k3&@# zw7ep`Y9T=oxFcZZZ8-#R(Vr}>Zl*1%flD?rm5X(m?1%Mc%nkYc)egmqi%;VTdRx=S z-q=;DEuYOs>2HlRzm-f&-lq7qu05Rob5A8~;xp?!zzmO0pgTb=3(1+2prLM>Y>OsQ z(8e9H=9o@#<+!j^C#q+CNWc2DW3* z_Y>|dig(qj%ZN))_2>8+_uhOAVkc`C2zu{m4TfY?g_RopOLtG-!0RN5Ac&6db5)y* zY3!^wLbOPVPFUnM*s+@G$eR7#C?)}4l^m&(!54(Rjf8S?!8}XWh_OVjC$#b7rBtkn zJMY-XP-6?iu}_ry^Bl3(-8-k1kd<;VY*Nu-8zUc;Y^4R&Tz=4CUz6`cc^vaNgioHC zk1Vv!=HT`Zdkna8c&bINtsfy9Z=GwOAW`+B69;lIcE#F+PI&$}YEFc0r)=xOZYe^O zti6vt-P?MQQ2A=~(7OJqZ?giZ-W+7K6HCm-$>Xd2b!|!TP+Ef|hDkQ07_9EW)?#$J z4tSEXm4-Vy{v(toc;875W6|w{6|uu+QV!BnS>#A(EVyfn2y{nyK=%Wz)@fOJ-UniH z7rBrc{fB2j$KE7-iSBWr61uWtyq=227VyY`hyHurX=&@;=PKQvxDL`B>y~0(FQ@sj z-F+2E&C(Ej%|%~)N78MC6>qrkPy(4_2GKVp=tj-jrBH*NG$yVcQ`*$oINozJ&SRBR zGapS8);KX|=wvyhLq8Ou78iaGZ?ia3C_6<{mJ&`kYT?6}S`AEDp5BJ?N`MjoE5%;? zx&WKvVJ3{;psgo08blH$ZMGc4yx%?!hRsDkQ4AIEq}P)MM{35qn&dODh|i5?*!;yB zRv{?CZ-u0%id9VMH*N)i#6IWQkGabFL(%%Pm5MLy58YmdC#+6eS{q(zpsS0cuq=x$ z0)yN2Crcvaqpl0D%1)`&*XWd>;ttjxBl?1U0-PH)HG&UIZmA(0{=0lEGGOfW*ozz1 z-ye$F*o4Py4} z=G^9zyjoehg#d#2q;K$Xd`Q;y-X3d*?n>b+x6Za`1f*t*?2yZmho^)Fpr-i^(%5n* zgjM3TMy%Vl*;7|P>QQx~6&5XyW2#HU_Oo&6pHGU88;B7Ug+zZrl0Du$g1GnFdK6Q{ zp5|n(jVM4ZXXzrCOa0J5FTED`rX^@(10E+@DC7{L%5p@bsGUyYH(~auy z>ZzT6@d}-$z<2hKiutj_5+&50uv`{`gU7QP5=nAI&~qm(Eh6P4UAj-KCDvRCzcmK= z8uVOGxmQsz;Jc0z5yFQrbH9am7$Gsy27ZacjpBh9OkviOAhqx+AeZ~_RSyD#gnpv( z-B+SzLT5$jwK@_l?ZuIVGMio6Ddtb>r+AgxUt%Am#~z6}Gp52~zQe^7Ut!D)TI|%3 zVDF=I^9GnV?s7I)*M~;jTDA8kM%BVuBC2SV?X+tNDSI@M>gZQwef+t0&b4az48Z@% zNt%wtg4|V%niJpyKyRqf|X0)=QBVLm9PKU%l;U254*aMe6Y-V+L6&M*a-PE7YAK; z?eN3+8Xq6mN>>O4mc|9eYA~GUf{+`0u)5l0c3N)x^ule)B{?ct#42Y;JH4S#-#3vL zF3c56kIbLCr?}TPU$Ua1E$Or@VC&3bv&g;l2ZMnJm#JfGCvHn4wA!{&0`|YBjc$IFgwuHVj%Op{pYbgO1JG+cBq z$1m>L@%(+U%WgRgMtWWC$GT3L**cgJ**){Tw)vpTl-SW9OZRzKg39_ge`FQN-dmoM zs4cCm(%TN~*SlK#vy2q@Ep~BOZHvyctLNCWcc^DXl|HbiN|8Q%T3y^EK8mO0%M(m+ zaX#irkQLKo$Z0;ttu&zCz;t`Zc@95)ZcGE)NQfTJyNb?U6QoT(<-|p+QIgi^NDpji z_Cl8};6s_)-efvu%#EzrF&>e&jS+uW6#BdCte~+7f!c$bYq{X&mmWR#w30C_%31K@ zC2eHA$0!j#&qE|3v;BGeI_(!gPh0}wAyu13`78>B%E!Hr7dL2W7ulmIoyPuLGRC?hf*&Kw2a8EUI-g?!n*6uoES*C zJk!M;>VbYOa)$2Lsr_{xdWF`uU2$D*~?wydv<5z$*f;2)rWjiopLa1bAWU_qBsG2gQxL zHn-O+H-HoRlDT>2Mv5Bq={v@4A^z?Mwy^8Np=2&|zj{9}8t8Es+NC}qpUp2>VMZ`P z3*-7z-A!;Vsi%Ms)>qsIKfFm`-O|knWpypG?z{b1zp2R9C6N;jSUBUN4#jhvl$u)o zc62)l8ZTvmyAbr`P&-u(_v7cQi1{1it-Q`gZWkIWN)DAqZQ z^XwBT;LR5GFVD8{-p-q{rtS>ZV~=!M@BYVDI3cDo$J;-zZ@_)>Sab_fSNbo63{@(l z^l_g7Q22WJ_F*LvtZAvsQV4uR+NxRZXl8z$Yj%tufn&vcEKDL59si5Hw+@Qy-`2bv zCn3SzgKKaI&}h)$?rwp`-8I1_K(L^}-Jx-Uy98_8-K}vM&OP_e`JHp$xm9n~RL$I} zH2-up(7k*0?!EW(UC(DdjEz0zlF5Mdw@!EVi#Ny=yw3o;o8z8dGx1qgwhMXuh|8+s zyeT`}MS@g&Za6hA(5gl$dwJNgmAuN;T}uITuUXeO2m71h%xU8_>d`KvOU9d{hKANB zoE^Ur={CqM!JTIcsZcd5<48O=4WHb%!;5-O->4z?R1|-Ou)4Z}haQV-9)yI~$;+KC zH59l#{Oj`{+pphF?LzGK$p{Y%ut>1f_HD!$*jCMNGG?H`zr5+$rg!4+jb*=JR>51L z9z@xw_4Jkt#6qHHC&K9jhK`cdIyLh$Bm3fHKXKH57Kmj|icZ>;lOf zHTNNSvsDvP_J+!iAF6{c9h3B$HHjV(A&hopC>p5m1yXAatbFi}4R8{PMm#GjVuKX! zjfQ%5%w91mx#*6HZJM63GL^hZj{ih*HWbn}fw&|e)YsIPs=gGszNsY1GsdmD&JFy`7n_V&Jw(+!!03 zF6Ud(-}bn*3#oI}(1hp>U&rsZI>j$KHrz}|G}?U{s@Sq>?oQdc#;>|M;2>kr_%-|k zl>qi@xN-`TE4b3cp2ZIKMS*s^4xu-jK=~~b7(7xC@x;@s-es~-v5}egkYk_2WBN@% z$82A#PwzULG*`3x@(1>I$rYkt+DcCv3^r*i#%U87=akq~n*$92087;)9yf+ab3Mr| zZS_1-X?9y~*Hq$HZ#U&$-NZ0JPv@1^&*@5RxLFvTlK^R83+Ns>*gUB z&tC^J->Q3Xj|ZC^HZ<2d*o7iCUhcoPP3~Q8NyH^3zwz);3sAy}!jxwt8>D)Jq)Gzs}nTl8iqS2h6x2pZp7Z=0tRh_qn;1b?Ex#+ZXTBdD5hfhgpWXR7e~~_}+f`K!5H|8j ztJz^G&E{0A^@Rs_r-L6VRLw#SaaUws{K{CR9%T3|si2G2U6HK>m&KLn;4j#NJ+(_u zsRuvn_E9K&G067F0Wk`ORTca!n`1gLHwoWFo&hW`R-TVPoADfwefd;#P~32m#ckeN zXAMYu_39i{O>{O_rY%N)iE>Uee(4y(J|D-Q%YFJpz7bjf_Pz9q#aE(J)o*# z$H`5I`~Isve{0!2@WzLwVsCGHV{B=po`4$TXV|azY3Vnq6lfTJ>7f0^!nb6uHv9?> zVQo`e(lMD)v?cIW&hQ4ssh13rq6OXR$C>m_z*;YwW?2I?zx$8JZ8=N&OM21FRoD0( z8Wt7ps!pp1+e&4VYpWpe=aL_xmVB|0Ec6>)x~i-6@#kW6!lafc=z%X`Sb7?de$Oc=qE+ z9$#yWsb1cd<@e0>mao50-CnLqorqZn1|mIn^4OI6vafoDrS&$DJMK(*Dd1SeOKq`1 zUR>&=WGDb1uiw8CQxs+wLPmz7U*BZA0_;tyDsO+IQFYJrP<@rz6yBGTAQ)`% z3`lf+^@!V8`IIaE>lx5vwWnZWfEPk|*Sx`z1cF%C-Ftti=PPY+vZp2fInWnt7S=cL z{Ts+w%OgsMsiCyE@c(P?WZE(}Hte<->5n0V*bE>S=Y&$TbI5%KY zKf~LZ_DfsS2k!PHHk&U*`%DTF>5y+3qyhLW$_Ry5j9ommB;J3+t;tyT#bCPjLn8=SoA)StVxnA2$8?K zUTV9#n&fr7xBHM!#A=kXF^wd*4JYqc`)4giyWZ+eqTyaezwyd=jqS{ATk1XH4RLc_I7({+Lv|q* zvQpa~I&U*%A54G_B5Kmau)}s!5f9#sL+rQKCZzaUM6$C2iia&sGdj*x?nDoQ`!!n1 z3xuQc_xxyl%+c5tsOJ2y$onOLK}DO$Jn)(ij37Dtsl!H-q10v4HLtkV-<1N92|q$`D((0z8-QQtux5B8j23FF0dEg?t7!H|2x zM#2;7`{q;`lVrDCpOfqXcSlG@K1iam!MZC|d&XQqt$pF{Re41PA2`k9p<#LSu}RX4Jp1#-&t}V|5)irA;m)n~KISJY1l-Y9X-ob!K$DE2FMp$I7?+qSD)V|^O z)W@VJt&h!+WAGdKK^kk>$iNnfk75XUB!I@&A4|M&div?*^V96JtUyH)xnM->nY1t+;B|4T!S3en}vQwvw!)T2Cc3CD%wXAMH>xzaT>K= zmXse0)aPW^zc)Ptw81FNqIleB3|<|aE%(h{+MQ1rbjdvAR`x!<-||=Vh1<~FVR1&> z7>`DbQ-Kb+e6?}vhk_NpdhIc{0NtwP)$fIB+E09HOhy<*in^5E5326bVp>y1ulf&* z?7yH`o+opsDWHRbp%A?oo#M$(7f)-=Q)rR>ndpaeDwyeZEF!d`Rw@;eI<|vkB>u51*FYIEtXSUGv3jYj8Pqvy{_KN z?ufv8Z@j;6(22s&wjev%>qUE7HDepz=kMfX1zDk4FPRLlKzH{a$Ds~sOy`y)r(Cq z%r=rUyif~j>eD$#bN6gOiIoEGM~{V(kJj}ck|#e^Vz__{MRrTOQ?b@|oV43?MwDDt z6q10SJF*NvGzzIWfDPJOpYT&W9%|I`Wm3?1KXlw!E0Ei0uGXO)V|Ap=rPz^gz31qn zlFaL1!k&F#>aB0J<+1eghF1C19HoufH`B@x%G3{1HL>Bh*tECNA*c!OB)Ai`?U;8_&rF zh0|w1Ex-1M`sEF?3g=_xVf(}1R>nqKdzT*lHv?uu9n#aK9!G~Z`oW#DoKk136cKo6 zBx3f3YSEk`<4g`^-_fdDO|)2Eiv{i4T6=4+#@{irx&F)N2phQI?@5SU_I-R!bb`1- zQ~?L+;887#uypAc2TTY*8j%T72!V+f(yo!F_MrWYtMAf1<6@+N*DPO!UOV=<2@Pk` zle?JB-CnYJUF6D{-|XWzlR}^9aES-TnC}x3Xy=<@?Kb*&TS^PhfU~Z~oL;rVvh8-k z4{Bnp);_wDcL0Frx6;*1vR{lT;Gf*}59u~S1*Y-q8v-MTkhUL%TLgMB++7&SH3PXL z-NTzAt=+ccL(hQhs*K?I#lfo=qvFi4mTrYn^_=VXBQ&Sa_37=jYeuylnHZkV01g&R zLARpzvexsVip7Ix0B&V-j$Q_ecsv2srMo8Ithe|xV5aUwE>mKrt+&}n?Id`zfwPhD zEh$qfNx4xJ>lquRWqv|L5sVTH)nmfJ!CurB=w2@lIt#71={rJeSYB|I_XRJuW^lLH zbIZ>uUTsQ6r4!dMgjhO$dxQ_LebxUAXmHoC(iQZwd*4^I>^f#=^l{;_pu7*VSJ{Wm z<}hve6{-6xiS!w5_wA29xX~^xj8(|zH{2J(p(~Vwpxc`{uE+gT02bNjx{Zm@Bebe-ZR**sd0eT{d9h- zC}Ot0YQB;o^HZq%XZxDwnqsx<7x|}rnn5nRpm$`IGeQ^%Xf}sABs6`gx0=xV(1LCQ zLgLtG01vt!r?t@d)J^t`JfbhUMvoRikOy(&Qss5N!0`%RZdOwarK(wltD&jH>^;!_ z_lNcUeFEg$AbYD#tJF*jfiEZYLOgYcN5DCrO^aZJuH;Ojq`u49$L%y_T|v<4WA#-k zp|$?N#M-I??Z!j(MN0cUjpL~Bjbo_;ZLkK&dnTdn_$XuFJf23m%J@!{u0Y(z>18DAWI;>e@}}hhsNCUTl$U7 zAn=W07tyy}rZ6<~MzEP(u#d{%!A__> zbrn}Ug(u%la6A4J{g07vE8r-z0Df#^x*1j(1l-NuLtoPw(Wbx34F@leaTZ}teBLTE zz7<^IXd#!7kJsbE3h_04+yi~;WSC&2lTtOqBg4~F7=;mOvg*M2%)IZ~)>_}lNLd{2 z2=mE%l2Gc-MK(BRkIqcr2&u7BI`T`Ru$05V6vO_b|KIe2`v1B8slb1i3ZNdtDg+LH z6`D!LxbX5>G%2T=P5C%9nb`f}qJ&Mx$8sI>G)%2;vVa>!)bdkifU1~@Jnk@C_D z@}ps}vp)llVS^|HFEg>>D4ocT&hjN3y&~dfqVWUc@6U-Ajq0ZbZr&{XRFvOL%eIu+&_sE6N&!9L_X{W^{vY@_oy$y%|=` zr~i6r3!IHRul2@v09;V+@|+_Et)V(%Cr|Za$1*=yTGq0>)9TC3TJtID1T<8P|wrZQgW;NbO}Op>Ra`~${iCC&CFE?ae#(+iH}K*3lm z541kZU_zUFq@QBx&LNHY!+!p{Q&&tfbRTSHH?R9LlcGb!TukGfNwdEr= zCq*O#Z}a~C9TN|CSNQJSiIf(lclD-{`?Q!|t~-1qhVIwn+RpXs!nDp~-NK_j>R&fl z&j7+#54JmrYHK{NzTX7H1|81oRn+6oTCpv~L@<1@o2VBm&qsuHMKY62!R;aihUNw| z=E^Vv#Y4VM-|82Gx$)hJI7W} z!Em~18Y-35pG55GaXX)zPjK$5;1Cf@h(&?;StqV~UhE7^E+n<5M!aB>C+@m0f;1Sb z#BRB1P(-zNfg@t?IMJ>36(a$2Q~YLwa+{8QV@`%ljP|6Eksp{MrScAM7r=d1$Y%~F zJ8!^0)!#zbjn0andaBWSQ~cM{if|UBx%(P@Mq&y4{tZDGQ2yf3)O}r51F_4WhvkMz z>g=r4);IF9*F&acOOV0z&YYQg9{&1?pwf&2=D8oJq(kc#2gy^VBO%3dUNe9YXzty28k9WJ5*H^2d&@%;cNc| zm$CJ)BjUGHnhLRti!0Xb)uTcsOisyX=83xj>(SJVJ?aph7?g?kGd={f`Al;c?JS8Y zAJ$c{Lkr=$INjdx&IU6GSAsu<24=SNYuL}-9kI9=n^;(0oSkylz+v5S40ea&kC<-J zVrI(q3jnPw4u>`@lBbZ`(gX73H+oKd&mh3Nfq8*s8}L zy&479HCPXgSAv#KRqM-5^*}~$U{nn4n?x6+FY53i>Ua23xV_bnu|o1AJk5`by@!v8 zxIH{s7kwKt1;!Hq?0Ghd&vAR!85BD!i*TEC z&${2tr-Y}YvI`CA}>h2FdAsx-M_(D0IZ_sETaUf$PI^#iPiug7kzYT=m#H znzK1c45zKZd(eWrXfmcP!`oAz1LF9{v5vSO6MoRjoFQjkHsFQ__50teX&~EP}4oi>bj}(*I-h_ zu3=^IW}hXY%EzG-`Gr)CMLr(y&yMC#Gk$_ck2w@v_RFci!05V;31eAu+Gxha&eQy7%skdVVMz(Tx4Nkcz_{jIukw z1DmyZ)EZp-uD}|)yKl3x4)(~mkQ%M9u!@IXDqgv-G>o4DR&W*DYE7XGizp~Dv0ONb ztPXL!G#29F=)D$H2*QC!{kNL#Q+Txx)mRrd1d5x63O%RQY-B%xy5a*a#${0bMejnb zFKq=Z-ZaB{eOtM`P``((UJYq@DtEb&Q05Dr*Lj^*wBa)Sfx|QKvF3YgUen@(e>oTi z#!+qOX(ImuPDR9dYWF@eUny#*qM(tBva_v!H|eJhni98@S8Gjw&&S%h&o_yZG&e~q z@kIeWA!wOGB@=Pow`BHg&%v)L2+ys!WBI^h;_z&NQZFr^DM6AAJ+T28o6ymK%V6jE zJ&Cw%mvX2NLW8SL&>4gFl!~E4wbg%f>R;7=EDTIW&5H9ik99qd4iQNx4+6ouAr4f# zsYuzM(=f*0;(p@~0JzVoX$(y@>>|iAF9?YRN24M2c7dl=gTOe>Xd|k@Vq)_U2GK-ebT!Udsvn{bFh-!<~ zTrS}qnsFOx=zC94btq6y>g$TD&r|XK_4#1ttDy~K#ee}*2~#>>#;FI!p_H|%C_Apy zXMky>)P*BAL9%8DDROQM85s@zPI^QZTj=*h{ns)=)Mq+Ak;YC6JfX{8So1$qDrZg2 zq`%g5POO<)9Q_ z(V~FzIyx-^Ia85woiL@87O5gdFCJHVHuRfZ28MKMz@RSM-);sjZWhks5vATt#Cp!{ ziN~W0K{Rj5${AnjN`9k_K07047{F79eR3^*Qir6^fL=ToA&P@>)-b6x$)0zm)_#g6 z#@!cNDJD$16h(LCOgMnn1D?pO_@J*9BQqsEktSWE5(#Go5fdQO7iN#hUj!IKZM3l= zdg~3jT5gvK3M>6Bj$5G<3elDQ981BL8W$j3y_g!uH;K@Ao`7Ch9J&-eW8>SU6M$I3 z^1-5ih+Cbn;AaFO%%gP5k|(Axj0fAnWS)2|v)W&;G+!EtH^qe?3M=<*u2RQ+vfLGo z`yEj~@qI$1lR!g5D@uzs-|_Vacxngs`s#DHqfr`tm+I?@%K!e=;vFSIRDuZAW8kG0 zd)Sdri5pG!+r`RK^lj?3FP=--{4qte(KLv^+za;Wq%|xfLa0wXE|(X~*Y=8q(q0sJ!t5K$-;!tbL+@bvrMZ{@Dl&s{p5yBY6- zxoT$TJ&>>HXK%{as$7jIX+;Qw8FBft0O)Pg_H1e0@q%n`-Z7fd6|M0b+o_}DsX06T zoQ5w)SnFnjz`gMOB02&`M3oyPWYYDWf+(5%rZd_^?JFBF_l;}D$kjsay(AH#4|g%p zCbUm#g~nii^9Hsf*VuFA%%SqWWKz%c^mL`hre!KIr_xJD@^RquZuis?jHo`ly|Kie zXC3^0a}=%UCOH=Bd|q0Gzf^V}dlWr8b(NU$7B>zH5lq}H5q-j#m@rhs(XW*p*H^?D z%MAXJY`R(hMx&6&fHe5(em}by0g+~i;SG~YLVRMf=2;T~ZG5N<9$XmnxMMpZliBZo z`S29!=s`L~bqLu=u~}L3OP>W%6qTQ%Qm5+5ppK{D(I7IQRXfef(i^gc~>Tky@qE%a~E`6?cdtWWdGLx zXNUQR{uljAZ~VWD2K+z0oqv)N0e_Mb|0E^;NlN^al=vqp@lR6XpQOY;Nr``w694-o zCBp6fds1S8-e(;%{60TgTDghi9E0R;ZZ4hrI+u^?i|}(%#zw3s!Mo*R*zgEO8lni) z9br5wvkBpc#-6mt##y12ya*&+66TOOSDVRP%O5j&mX7lB@{WQ|Et)@E^Yxk|1b9vY zu6duyo_9Q!uW^X`)*ON(`iPI~&_vK(FS~Xu1Vj1kv$H-?Wt#ZiLC_KmVxJxVSx0z8#jt^LrM2JH-uWgL0Ffv*EEy(npuHqj>aOf1lEd>z0W9YcZ2s+s>^C_x z8q+dj0l%YlH2*zc%@HAwTkENW=A($1Xywm#7RK-7cGgUi)pF>;=5x-@wI+9Ul$`?a z;Y6|;s8=`QPsF{te$F00k;n7+((pSGowSMYp}jRybq2^T3F{{)o?{m4O4z>&wT=B@ z2ImZuAP4h1X*mk<-qZLg0{{?U$;dytVFi%>{^-grr^R6MnJ}Af-7&&_!5i%o;S|;w zYqbk+IU3P3kj?Mc3Y~Zaq76>$C+WOHRl@AH`WYzP7TYU{iOZ`ohpiHeA83TX`oqB4 zPr~FgOG{tBGiD{KU4{p*V%mpMWcNjRb+O*KGG3B?`pwTO$y)6%Qwvi$+%@8Vo#`bo z-{xjFTt&j}gmR6rL_u1CH^WKt`MLs~FpZLvRZ>Ht{GBNQv#G^Ze0sEDsyWB6smNr= zMo$s1yZ5q0Am!{OaT@JZCI#oWY?qk%*^wl3>it}w zwf2#k3m4;W_J0^SI5=1Y_`d@HFfSwi-?3rBizp!&QD8a522{QL>(Ae!h-=Cm|BM1W zJ^fd<`hRhE28g7_r^J(yHyqR%Uv`xzy|*)|Fsm&jDYq_tuS!pd!^3yGock#y=o(`1 z`qhML{As#Z^Jo75@&%MO(Q(7&a;t6UCDLs?UmweSWvCZu3P)*+WG3mLl&>XNmC9eM zBLQcD-^2@kJ(TqOoV9Kpmd*3lFY~FE#CU6rX`M$W2iDFu@m3WD`tE;4H6XLEvv-PC zNg%F9eWvRS`P~vp@a?Fz)H$mqU|B%zQ^w$HFWf8c+i}f4IWR-X&VmT3?Md$29M`Co z)56$cOir;_sHI(7;3C1R58O>nySq!`>@-FHX(jF7J5)FGMH6?%g1M)9cDc@b3rzu^6n=mq+jPGU&4-xec3(I^!-Zr+o+CXNOiXO zHW915u&9=5qsq*Z!kjY0K+>I-gX!Gm2!rS_KfM3!t)h+U*Z<_K{(GOn+sVvi@hzg* zXB13H6{T29)$CoVn<;a6xk?geK{bJKnrKC=&wz)$Sd?Op6QjaCX*@%ivuOnx8_KRc zauf4s0JMbC#XrZ}*j{k|?WzbMIz&76>Sd+(U-pNfq*zL#T*HXvZkVfS7S9x z_4I)4NhH;YfM1^UKZcL7LJ+tfyGvJ3NC*I)6%~jT91F zr@=B58?;4$Yv7j8?BBsduH@1qdRtmk;Wr`D>@J1U!KQXBL9<%e|FaPt7NXoG^ zvTq(5a=fuGsi>Kea7K1zb$yVTD{vCIaqVHR79^4P{o9ImbmI7#`_c3z zW(^ibcJ#0J(qJ8zlcVw`***#G5b)Jv@$7joU+`Ny0m1!8lvP);iRrto3wQ{~aCm+V&cWod`mT)!U6^DYbFMnmOcoH?}()F$_F8DN}+;~9~Upq8_dgH=QJ(YUVi;J{SCoeZtQlnJnLk#p#z$huKjRcgKp+^4l zP<2CIhz-YZ^i;=PKyT5Ycc@u6g-Shm&fHyzP0MH`BnI-ZP_9M2bv$HTWY@}3aOy9|ufSlpeA07tEW0Urf0vmC@8rJs zQ7T=drjCocEY$>$lH3d?L|+&3LMK|n&Out;E^ZLjVRM5N$HgnjcgM1j&!zzxa#eVe zV&52GF5>{S@`JZ_JTCP%sT(8{*UnaDE@BoR?5Nsm?T7q|;ITEmST-O%GqD8Gw0!ZrPFFoRcU^aZG8nB6d)-mRIP`SPn{Ri_rreY~*x)KTubrIe7g}hJ!pil}Nj)r2@SplRhQ7uEzuP)|XH8M*8fr zZaUw$UwKKzj$Cu*Rte}x!c{czwIPg)R{~G02>b8s z@p7ruO*pLevac$cq>l;Jb+}z6)XSX6hk|8bSn>93&=xd(t;-g^D2qpMZGV5ICW7R6 zLg-F3;~pXJm^RGubL-UXb#k>td0CCsSEMrkD)5~8QRt;gyI|>pBp-DOlN@P-9vNvb%bBkBwk9Yf5ibLO ze2A2`$x$tt-VN<#^czL+{lUy>0oY=HeQAVrAFnBpNiv|Kvh?)y2!&y3HT-u5lGp37 z_&46S_(hd`5P>{*<4?MnHb%>!ALBDbEtGa0dUnPuMqHCQ_gX8(8_+UyH6M+tI{vtJ zI7{^~jPr{xzl@~-3GnGi+EMXWG*#E^XVt0zyo#?*Gup%4RXnn4h`CUK&Q=n&p&#dS z06Ks(;p-E_`~NsY2Ei?%%Ot=nO7se>EA7+QFk)9Ptb>yJ_ukU)4{lINb_X*BtBv(U z38|s`ED)E~O+o7p;wvO#p*~6U`b_a0wbD^;----h16$qL;wPd{GMl@R3ys1dZG*i{k43M+% zGWW34T-$6oIp(PoIG{1W>uHmno8^Brb*G7>kN$}9WK6f<8`(s7@vuUg3LUW{_T=;S znJhnJqt8$e#QBbJnPUb8+rk*_4#NgYlLWQ{Yh8PNgmU(CQo8K$aMA$*D4MqOS@A|| z`Wa=owLVozq$9B;Ws}DlkQh2cFmt9-3cL$3Xuz(5t0TL znSy#0=F}!gSWAoERU2jwlN@!OwWfUN`Q67VMrRc=`eoDWMnhi8i`}i>#1`~auo@J! z6zde%pleG9z4qV>0>_aJdP#z$O5(^E*{XRAi3_L6&XOC88TsAIU=4v@$5@J?UWr@x z!|Z!xOE}j@foZuPJ7v6IOFl#0EqTMvHWNswq;sCE*uSawt|$r!a`kX0+eEfn)H#jX z;uT-L(JIGAAn^)LfE3RKYeefP&(|g>F@n@mbWmb>>m(h%>Pyv&=?4ZLYguO*v{&Z~ z9;3#zxFLL(e~1|r87J%Z#qpd(P6a!RuLsp)IhnXLPWE4xf!d}op8?`DRg5zHzUL1m z`M@yfSDNTnmm|d5sM8A5CM?MnJH8g1(z~2`Jw%o9AZ@Yk9JD&RmvafKR_D0M`7Kdy zPXH>!Pcg{Q51Axnw9z~I+eD=4GoX7j51P^nOnB>nuNlW17xg1; zbZDqkK3OrMfbx+ee#E|;{>EUoM`Ubh8hTeyXy%k*-{;JCIj7n%lN##?r=l-UhCO`e@=Swl&AM$r8GVUOLJpc7(SIL>=`bu>$S3J}V;a z-pUOr_nF0OR1QpzoNuG3qM*nFjD?ki2L@^tYFrl>3z-%nK8fvGgXb0|VcIPEJxtw1 zalnK8W>A{h_Zf#Y{$$xB;@D3=@y;mW%oioHqQ59V&V_|hlJ+l5eQovmI_VllHf3$g zQq~MD-Uf{sj30Db>bdn+Gtb8TCQW2u)N$FlVI-53uCZ4IY1!_xH0`{Mj(;5*I`(QX z=k!5c-d4hSwyI6_^eMxVaI=N>TFX=CQ)sESx%r#nkCe}VfsbKqPhro1AObwL%;7KK zSpK9{tJrMX0wnLdoW9=8t^Rm2LCydZ@>fca!q-PihQ7|_5whpC%Y)v^VMJNAd9QNVA_9)0s4ydmFhy>E6)bs?Y7DC6#Z~sL!qzp_CPU z^+nR97ns_#(;q$`1`Akv>RG{b=~BBI61+0UAWG&lW6N(bN}jry zZ9Mh$rOZw9PrLiAElzcYk2>Q6 z``y*nri(09wUnc+gE~zV4k78EyVsWV5Rg#8S-o48LxO^aZ=12JDvva9Z8JnGm$d5K z_2a|T3GgQa0}^`bU|@bD|D*rEhWvlJoBrqZ|5V^l1^!gvPX+!|;7l1q zmEo&lcGIU_(f-zo_3a`?7206O*2)rYCgqPzpQWH5X>LaQ^p;#J@o-!Fq9o)YnNJy% z*NCQNE!-hUEN_0>%oiwh1a_2%Xf`05&BMaqguM_QFO@Gq7kr6To*IRwblonACA;K z{F7_;@fS1sj)NW39Vy|hZ5aALi?9z|E^jZ<0sCGOL(-|$FV`~ex$4qfaL(J`6`blb z>rZ+((%rPNQYhUlz;Njh*6*UjkQ}x+mPEA)}W#O`J?gg%=L738~GbY2heVd9NVW}lcdb1+YH*^!U~b$m!)_zYN z_XplEONR|tBXi@xO^azw(O&1=OSBMg~_~yRai~&W$&JlE=Pt&s4bA^{Gp{x!9vW@z6I3x(=bH z{fS5NM(G=Tyv(;;T@vKiuf{Pw)ro*F)7*j+<}|nVZaxSMbP2~=43TKvPSiH(|k-Q2v{V^7E%V8v06h#^<4qAg^$W2jgwcTb~ivu{&=Me&d# z;z)F%y|cgH%Fm+0R~Ai8@_T=D-ToFnAa^VUQMXiEYVJ{ta8Y}vvXskm4rdr@37WBp zj!;}p-u`B%Bjtu${T)6^iU%>@Mc)EnOq*oYkelePS~jk~BT?U z0y6{0Po7NcyKD&PI~8W&rr$*V4{ljWH-iFjHqBWEjuU%jB|Fu?z(_c;1yTKnyY4Rs zVEr#>=?14)^X3*|lCCEB9+Bk+5d*{QtFHj<)8Cf*%6ksmeJnVnG6;KY_J8+|MKE(8 zH|KvLtv}?NlrblmZ*ZQ#=0U7gvLO0K*QNKFRj7${+ZWHjXD|ZgE?9Q%QxHC&ZxXp@ z9zw!-3kkUJGX7zbJL;of(F;166O0Yn!53OIu#)ZIl?7%nm`o=*qTF)N-`w457u;uq z?gS3p7btVPTkVMAe_0INl?$awZ`p0;Yr@m|BiXHJACx!iG^J8lOg2y6vbOt};8u`{ zrNv+!d#A)!EfXiBDPd=%@ElE%juCF0d;1B_M7quk#>eb29xP;2rgfLCpDjjX(<8bu z97JG|$&dozhf$mLX@FYn5%8xxf&MTcD$GX!8885-NCG0eLA9}}Syny z!(P-83vGMtJ5KBvtKTXPKV>Z3r^J|l@tyBCt5LiKrh!>+(~0{xw3%oHy|KFRk^=8 zG`Yw2_oZlQ&4d;&Kv4G|y8ASTWI~@7oECjW{m!>_F>bOGn66Gu83c{%&f3syOZ+ZJ zd@9G>20$%-b}U{&9qUHu_dZ&`z=e0QTT7=E`O_Qfv0c4$ZPt^>a<1aK7xb_&8lC0E zqW`%g_#clTby@jO1msEmeMR)|{{Owd`2TPJ(Hj5Xa^n5-B>&e|;19O&2V3a=gDw2Q z7XDxhf3Sr=*uo!d;SaX(2V3}Wge|cD2evR~weh(v8~| zZb0N}kX&pM@SbT@Cx5xNZsN_+vHV0tr(I_7`eDI=4w3L(J76Wvx2IU+hij`9YM<_k z8D#0`Huh#;L5R=o%wYj$69sNGGowzn%!tVBv9VG06LGr?zcaW?Y&LUosr7q^oIJt@ z@OUj@u`N;0egG*Adk+TbSMzJIGPA(_S~d7hZch-d&#n1VG4&5UX>74WGH>D6!~1dj z#1WQC-e^-W&tx!}nZ??k26ZJA;;dS_N^AYULzD1eqnU%hr)F`jUM0W^DPP71I=SzCL@K-e7%)}0O@syXA>qdqR??=jDfJf^+8Vb_X6EPyAo84aF% zE3o{aQHm_G_eP6A&Yru**YLz^{JNKM7hREV@aI}TqkV?y;}dTVDi?`288_q|@~^j= zp!>xZhZr+*#JG3AP|UXP%ro9PWf9H6eY>pQ42Az7a0fjk6Ya1clQrFMu zmr-3i5&(7LD>LfR-sImj=|BAc5rDt-|NlP!KlT4Mx%x+?{!yuaR4UaUmHJ1e{!yua zRO%m<`bVYyQK|oZR4RPrzpKrdtDZk*tm{a;uy6b%DI@v^+b7kkRka6=pxI> zK}dQm#%{3K*!A_ZSH|_TU*-<$cjbr7OsEKI4?hSN;7T` zVbL8M9{Ihw-d6JZ04gaTC7qagDjlB1+%8s6&%}fJw96{k-Yez3TR%`o1m!fAMhPM-6+ZGc~Z zWadTjk5x^4vikZydGkU)VPQj>IKM&vy;4&Juob>W%QxCx~ zba2Qv1H<^WMK1jN>7ifC#jn__eLMi6z}g<@8?IgR1syh~T4qM@jF5hD)2#=oDg(5m!dTHJyOyKs({U$9l(%s|NqMS2FA zSHZd>6gxzpZV#ay(ZgS*3Y;HCKoTr~=|g|b6ZR=Co6m-2#PVrdNOq4Dq;(#%=5?RH zl-cGhHg;Nksh_zcu{Gg}y%^8M{2tj5E`3m9Mcfawn}X4PKr*YF{}a0qSq&hZ+8Yli z!_9A^qEu#DX{}+{S|*J}o3x*e5S;%}>XnqrH7AZ_&P~!eCM57-}j{(`SQRuiizkHq!tZ zXmw<(8vUS@!J6Sk*6#g`n{im6g;>De_4jwUgb4x0#*w=s?SV4_=3JtYw{QYPB6 z(jV;VFJKG-AZb|BDxZ~^|By2y(h}%lvsaJso~=lTg};m>f~cRHI<-v25azebDLn>O z(x+7{Po|Oy#{4Y7_#eCldl5d^j|Qr?YdP~ZDMpX{*L)zQNNJZJeVi`3l9sZP4lON3 zPOzSWr-HIncbGi6d6FJ?FHt(Gbk0M9AqX)#_?(L|FMpt0mv}WG2pw=4WZl+Gmg~fg%Y5|kw)!t`=T$_hKO`8pToGaC5PKxw{jy$M2 ze<4xuX&S9Y5eE40_|EJ-ejX!*;7-cUlYBAyty)!M^&E4JG5_N?Ui|kM!jeR3EM5xlVdmM%wd9C}sJlHd5v_!hk@TnI zc)S{VS+11u2SHd9ajkT~K2XB7GtA~d$vD>E`Eg`lfp5)M@B40txE?uWvB8ra{nNBF zA>4=V8#BR2j;KnVixKDw^TB7)gcniDOk zRGTWk#JOCmAMLm@OPrlk8DZ&^8{#^#6HG3BDPIr}<_!+~nZEz_AbC4|>QBIFr+)Q8 zty93A@!>&J)8LGjE?c|&6)zgRI9FRjCVm^!Wl$Vn%Re?0-fAjoMT2{lSTg-~*WvvO zz}u!o=G4aPCu0i*Wr`Lu|EDs@S6;ie&4N@`1kp@5BaLD@3Z{RcNr- z=}O6QpMB|pLGmO1YVu5DVNY=SX@>sRzaku_D7BR4?0(~X?~mqamcT_IHdycP5qEBY z4rpR^*?1p+*or**bq^&vJ_NMtmzrC6-pMs2Y1VuiUr4*P;)VMI@ApKFd3$l~V$+FmC2|}72xaUO zH4C7&u7k{Ly+{x0p4oh?TyF2zD22vcB#&kJ^S3<2kNvi4E{rSP+1AUJyJb{nZELf( z)QEVCeK?YD$f!BQ?PWCo2SIyRWp%|MXQm%R>AMwP$o8!n(EpsvaYW5|MoIG#lH+%b z0?(PwS!$z4CYM(JFl?jO%F37~t`ydr()6lJ^pa_&Z@GGTDPt^c^Q87@;ONL+H>};Y zt1~h?Npe>kb`~X2j=>A9rg{PQkVho}bhk1sLlR{9Zs(Y-Ox07=(?EH>X>KaT`Auz| zZdQz{`bmhu66I_0O+h$=4;9#~FL+T6_`c&hJZiZjt?>kJYFQ5o36TTQcCF)``ds5x z%YABo@Tpol=J7XDvSP*91|t($ZvhL~p)2%BqK5rye?k!|oH? zJuk|we7UOhRn!H%B0~%bVadKXFt)W7q#D?cZph>3s>Ht>gK@kl&Pt13^bZ#T&IfpV;DjY z)UacUM)nQKLW@kd9vOL9nOMD=hJ*me(t^phpcDF4M>-4sYZABnZgrT#8U8QJZ5AO0 zp!il9-8#be$j;KSo%Z(JEl(}xKqXL@<+zv-+vWJ99aa)!*Ex&v`$74>AC5A18UXVx7JHbKV`PRS#)>`HS4m*H`jRu#E+B4IfsN~MaRY!0a&)OH`Ko50GPS5_Cq!hF zl0(i&A7(?dB58)HEwgj#D%P^hn>_lPin;9%OxItqxp!%ma`j*a;e(W(VOS~L?%GpED z+swp_Q7B$SPHwU)nhq)&O+lh~+ymaxREJlPSIaXCrJVzSTgfJ}?;%3g-ky!^Ua16- zipR_Iz4Oq1(;*s5VsdY}E-^Sm(y>9TcKE7l%H@oc zR4|bK()A`D;h}?Ce1`v%e`IReqHn_~%TE3NW}8&iD<)edQH%~C;SO0kWtU&MoeD3r zDwAr12QShmRioBJXE(!iHHY4%S<2=a+TpP_3`32u@`zVeWsZ(C+m71(av1S%yiQ9gDr&Sct&Eq)hx3 z`clzVd#~fGpCf!{0{JewyasMQ1zs$1)tM_`YIc?5V-ui8mo}UcLVoxX)R`543fq`U zY75i%tJJRi(i{iNOLg;{gxVf_i*fPZP5y&GKFw-i>*Cl{IFj8QWru+*n?M9UW0o_u zQ=pt(=_q%Re;GG-yV6d>Qt6f=XFJ^PT)7jk@V%^fg`%J^HGL2|w(vDE*S21$wn6%Rf$^k_m`(T~dhB z!&lxfXLfMN^$I~ih|eS5^CN&7EiWlu*sw7HY-%hVt`_n0QXd9G)BwTHM|`j~^9*U@ z;@>{^5oBNN=I0CiUjE!>??tSi655Y_Urk5)#>NH84hajxIOaPLXJe}_Ch=Y^O}`$l zkINcsa!_MN|9LNJ*eIBdDqwK-lSO|W?j~$3qNP}peIMGB<8ifBp~cL(_R-P664ipv z&tbI**YN1Lqwk{qa7f1I^-$dA_X?{iJFy4I>5j+BqSk3drupXZQ>U3nOh6SDdxSth zq=7Ltk?N)>K?|SB3~>5tcI+hXKp8YzG;mo{(pAZqqR1fUdEB3=cINedhP-%e{$Wow z1KV8ICZpFt5CmkPnwykd0{WG&gi=?i$+_9DOJk=LDmKOkobTR{vywAsMln0Scjya! z%^Fbys7BV>V?$`aBR=hT^e}8CVdM)pAeYI%YH!OiNI#C`Lmj0D^tka1og|xCT5$hN zwAg%JjlM9VQCiqBe#B&8lxiho^*wh3bPCly7_@0^Km)=UQEC%N-z1B8YGKurd@EMb9oFRQCJm7L@aJLu|K_qHnHExrY1 zZPpVRQIA2+T+8$i68g{PuM;=pDL*L+v(23oC5* zEXKva2RqgnVcokshl1VlbC`J%tiM8Rx&zR(!RI@asfMQ3j4@`g*t4l}bgfksumDLf zH$Dvcy(Z-Xcb+7u`4Zk_lnx>m-g3{DAd5&#lGY7Un6cG{sXZ-(H z=!=N(zv6#J1cYhdL-ji?5jn%yOJUpeGv!jHHzC@!Jkp(1A|tAJVECpE089z!uU%t`e;To1fX#p?6ht-sZyN$yy@y;M&W<@abaQG6Et>gD zi6WA>m~3P?(}v$D9q;j8ciZo5C4BJ5@DOSCzEHzZkhhr=z7b{KkqDg1X*&Y;M4znb z24O$wl%}3pn4U%Zn0$@N8p<{0I%Z&$fXFFrU0mt+YRbby0Mmftm7IpkK6hF@1Av;1 zT8Rv6))bP;*?ieNtT43lfaCYoDn9x5vEGtdid!)zpyyq)XLSoXKUMcIFEE) z%1wrMvyaJfGn?(E_N)^E~|^@`IP)l-})m5LkbUgUYb zTkz_%=}O7Eo@RJ!&d8ScFOYfmkm$&lGu8O;V6fCzBpVrR7H%eO^$Bgxr>Cb?w-Qc3 z*@@1idnvi*?vHvWhu7d!IkM6OS1>0Rbx%Nh?dTV|=sT(8rX#poEv>%lnp6PRV!+SG zvVOIqzvAny-ovTAKM;SY9aqMTi=H=B9xGybfi;+oJd}7lziUuL^gC+ z@q@^c2iXrt=b82a3`4fQ0N}UMZ8q*d2!!V%JlSJvauupUrwPVqNmch=B82$Grxy*X zUws;iC74=@s(Z=aLBd`-)m$5lu)dpw7Nofu`6Y$30pf?xbG420e z8)&@+>_ED-nbwIqi9C3ZwJx_ic~N|8>F9#9)*$@#=pTfr zGLt6~+6AIOzTu}*o;a)hqH@l(LyT%$W|f9a@pL$~s)hShI(X7HzG+8}Bt@y3n$FYF zC@AKUo;w@4hLTBLaVNx7PCVD5`33mJ3v{{n2o1UHzGKV#-y^}NH9C)xrQeIoX{UQK z#;Lb6_wp7qQQQ1TaBS6vL<(iwMtCaeM$sn*Vzh%=y!7=}U!L`Vjj2Xz zY#Mqt~7xB-g~h$vhoViD(>HVY~}GB@{Rr=Fg4namu%CAmUJc< z9PDXBmSWAas$B}OH#xrq)D91A5w*qmjI4j*Ln1tnj)la_YKEUQg|h!F;Ok5+Zi~yV_(L?FRZAMN4A3O|pbv3;g2Oks3gcFk!{S9Ir)4H(a?uTH>v~<3ObEyDjbOam zy9qV*N@MrE5?ChfR4<^jD@@ckyPn z2Nt)EETpweDpHlAjL#8mU&B!z{u7F~Sf?G6C+zV3{;+6 zD`K1pm(^(@MWw+gBhPg|P?T}g1`-g2(_aXF}o(jq$jS; zXB62@t~twgKu6%^QMz=mBV$)LSX#6(toEM=g_-9KvcGv(>^N3~yWXD!&KYS7Q61R* z^!&w={&t1^Epm3`JOL)P$5&PQ+6dJWkgZBiNsYc<&EOi;Lz2msW8x%a^jwG?eUlm1 z-7h52eK8-qr0J+&=OSA7buI7ZEoSP4Ncb49Y4RxhZNc_6LGGZaoBwe92?P;>iPo}!dMDuj?m;2srJz0amy0Vg~P}ARWAyh85KZOBYNQ z2!MLpZ`=x~f4DZEG#0N3a9I!z)-sj}yu2g*q$eMV*6}zREQf%d$i~J~4xZ53WvZn) zH=g-}U~wrWG%*cG-=@e+=^Y{DG}uhpdY2i!0sq|l7E@YijL~68dKi3s;%Lu@jEun) zchuSpIS&*l$?o5~-HhUb?4sAA^c-}Gi}mpXgqL(Xk45?7i0~|E`FLr($gO!dv_5(e z)FE!+3V&3YF|_0Ja?>_oHlWVc#>`Mjf|QkH8*}o6q~6^*Ss4ao-?*Jb>5I~u;)}^8S~RgE?SbjzX?`j1nJjti(V_Ofd3d#dvciyqy+l_SotBy; zk6f%~&2lw(UFq`OAB2Spl#?2Vd1e>iPI9K&1Knn=lLv^o!)aS<7(EX)M(SN#AQKL& z0J?d=+0XY7Svu(-o>e44MS9`WzYNcz{J`O6%+Pd}Weqt-USltgzJjezuX`UdoZY+Z z+(ZiiYnu3@JhuF@4I>lvQb7Mu;~#{*9E)@wZ6nh zkrhJT> z&a>{=RGEhxws%av{yiPkCmp4p{isNfDn4o;+`g;U!;zE_Z&6hhI+T^@mq07@iD1It zUfAF6pw)YfcPe{^%_==xNf9V%HS_InP6KJ^#q?LpoM%pfyt0#L;iJqcNQUQ|<-l5} zvmVSP{1uVT%+8sbT84{SDetSaJHG}Ryd?8tJRIPij`k>@pB)J!MA#5N>!gM=2;aB5 z>DX9PDJEf(^qjGO$8?uI`Rt*pw*r?pX0@4>RVF%ekMcSVK(&5H5erZD-CGyquJvVhc*h_GPALXfZ2 z|7z=2O{+MiQsIqVPX%w>Wi-$(DR1yLCc}P=D{Z|*fEkNF$6z;G{Hc_LHY}KEKt@;F zgS?g2&nw@Sk7nQKmxF@h07%c%&=-5LnTcOcJt4@83g~7pN|MZ%Ys9hVxIMARh4o?1 z_w|7VEk?DxHN^2QdH%!i}@p3W$yi{$OISP1k?xHF`*&Im|emdikK@*VPK8ylS9O5 zZQ16;P@BdgTd{k+#Bkk-DxR5h4ZTddxB~V!P2EebAlKMfi8rS6{5KWk>G}3)3vzUa zs)%TEC}qbu1{kB2e60I9{&?2zN6T5?iw{@7RtkKk=kOWB`8rtghA>!ml)8RVZGyGk z)`M1-tzucTc3X?ZVbhgKsRFKLu;=8tb+j>K!A6r#wW9m*I>Uguo76G`HAGDDO5-g8 znt1ZAn@8J}a(Bh2*55=vL4CEie6DdoJuO2&m0nYPs|3>xQ#v^_#(`}H84HXCKu7#e zEO)bp1`xOGa62f>ozL-SV5|}Aq^b+^5r_$HhdiE?PLB0{171lHoWwEGOqC{aMolZ( z6+MIoR}a!UjB$iKFg|asgCJUZm7DPrZhcA9<2x6)3%$e;ZS1b(uV)vLud%LIRIkuj7ynR7NAKuY&?p`kolZqwb=ff(+hz z)QKN<E5ss zONk>BgUG6?H)wjW98U);{t|uBPX2R=_ugj6IYceZDQdVC3Uy%^T!WAd9pL>vz(B}n z(1EK7v%8)BK@jZGe`s7asF=Ak%~Rvr*{eJ82WWz>dw%}qZfYfQF#Q< zs+0q+jvt-w7&k(5Tcp{eMP0W^?br#Z`f*2lFgFavaR9?j`{JR1wBl6OZZr(YfmVbD z4zO!#t~O8Efteu3BDQGl_WO5&b$;7;vO2z7pCm|!L!1AI*(zwne9%=^PAB@1N!DmK z5fDa$43zVHZfPyh%2}MMy+8MBU^+l{Mpy|LarXu$P@FfLKwGB*vNrfM!TjS7Lay&U z2dD)E+$e_ZN<{E6tJUHTjM*K%^l3EPB4jevX9v#ZS*{IRG(uSiTwoKbXf1bayD!lcMvfy=`>G39?p! zf1BF;snTyI;G!hl>dg7OzuG6eO^Gow3Fnm%r`d-=HN6DZ?#)yA1W+?RA|e;szxaO= zXn)%R|7ZA*1^%(XKNk4M0{>Xx9}E0rfqyLU?=1jiXnrKoC|**G64bZ?=go;0yR|G; zvP%6>`1UMJ2|vTU7K$4ck5P8yZP7^dv@@wdea@C>UJLovo_3Y?Bsf~9&Fq~H%=c^x z_$bRI1K6l*XlSJ@Fw6BW8?8gY3@zbM2D|L7QyhB3z$R2~+;X2zZzl^OkW!sTe; zrs~73yo!7?)<^LlFXkYIW)??t@Jo2{ms5?qpKRxR*DgPSW^5%r$u3ZxL@P7W0C@Px zRzx!oWv|UXEAPInTGZ6&{B2f5P*WUKOtGa(Kc3TLonmRj0St#S$pa2UZhjufLY#2k zd@|CKv?3W8pl)B`O~!G$WMK4!&e6A(r{gS);G1D_7=4)OKUSU7?C4G z4A9NmQtq=%gDr|#IqHXHfRtu7&keA{s+>yWRG0j4*8{bIeP0@lvHO0z##S@i^)4y) zxyo_kztky@JgPAe*$H2Xuw0fsVAoD>J_dTJ|0L{;W)7;i5Rb0D!I7p4<(+DBnJz|V z*wgqpeY2!@S=U^Od*G5&nF&b8Zcq~$yr#LtGm$Te!_$KOXYr-5C_QXZ1(y|}NyP)7 z;8v@KM}zY_4Rz-Fsq;490EIp3m>!#~1G9WqfD~~tQUP;ALaL9G`{H7whocc*vBl=M z+l{f3*`;G>RX#p;Xepw4ZmS7an7!=cDZK6$TmACaa0$$j&tiP!{{7wGBnM;=;S7Mp~Z_l zHqgpdW>XHSAx_t+vBwPQ(T3uIqISAd`LvFj1_1a2J-%GcL%!qvTz$Mij`l1#YFov3cPVo7wyKM-Y8qZFh$LrTQi8b;(mxHEZYAsF{U1F?DCH$los zRF`OG?Ue|s(b*yiz2a4a@{e2p14)R1LTAJ;JL3Zf;xD{O`?6w3Q>9wTy+2he$JbPI zBe!^3z$#}#j^(W=EEs(W%EU#j^LIB|p;u0=-cu!kLgX+uk`J4Fppv&~la8%wEKH9O z>u5RiPmH!67LF3J8~52S44(=L#3E0t4KoC6bwpR_G?p2EKtl1uCqe zv(|=^H_#R_QXlCh^vkI+$nif4Ws873c(3w$wORzeShkI`*B%tp8ogGQI6o=%Mi=id zr#m1+n|O}!?0edfix zA&;N3fy+~NtRK6v$)f&ak<-OPQiv;b@J;XMZ~<#sm(n672ctQ@_i^sCcNAfj%v4Z~11@Yj~f#X9LLTqpB|_W%=ScMJHU~af9u}V!<rcz2g@3r)B&^9 zHewvsl!Kc}1XyH2xbO=LtfY7dE>i<=^^vUIaW?sRNvkmaL4f)Cw@KMIoOyc=^c-lV zs}*9`*9T42bg~OB%L$)Y5HyD$jv*A7f(KibxGc@qSJI!y(TOx+niP&$!8r#m=OYYU|mLr#24vwBlnJ>OsyA z40|w{NcAXM^vicMqP*uQy;|zXTV)Ie#PeN8f7_;f9wIjr%MZ{P^-^T~L7>)avIM5~ zB2No`FNZW|Xy52vR)#o;(y4ccT}>{LpfvWZpHxrrFjxKc!Vn!khj>v>baLqNv%Q*O zY=`wvVI>`4m=%%rePOWu1{Ia59hhB)p(p28ex3F}skY!k0VSfMR3q+m#vvYu>Krhj zzd#R&P~I1e?t2r0T@UJg3L2QK2nhr4WMdpni}Ggy;hF#cH~s(mzhB}0J74*SBJdAI;2(;>KNNwt|4;<} zp$Pm#5%`B9@DD}cABw<#BZ`3Zf3WTp>@_q=VL`hqLJ4D^g;>=E!`{`sAfA@|qDrIU zQA9ZTmQOk~U*QD_A2u}_2?YnoWGc*^vX{Ge4--E;v#*>3y;z-Ti0g%GG&%KmXCY>Z}VdM2-SLR&y}DS7-Y>Z&g&iu(y@L{l$kH+DGrk z!FOcCzs7_+IUCK7TCN)__0THtzZ&*VAcHO3ejSbvJ9!v*n}P>$R)b!B47v{ErJPSH zQ*cly#^$Lv53yE!Ll)J<%n$5FXU;QLC2uqy&)YW}3?F^tL1t2Sc+)&P38WZZX=Ek~D)7oWMNIOW>5Sx}GGf$8yGI^?hQkStGA(TIOf`@bZr z`Mmle8iCr6wdHu@p9kZA7WF-T*GTy&N~6N{^1R*pYzYy3C7;Z0i~~Az74X`-Ps0uoMPbv zO%Inp`r`2s=2iH%&qZrljgL;1e^}ji76{7wdP@b-uR(r`toD)hE!Md3k7uQC_hVc8 zALW-^G=gu@I;k$EuwD}hGtheBJn$fVqt#Aw^7>NnS1A84{@;I5|IhM&W&MBQbAiKO zRsMgg^GAM#^b!U21tQw>x&Pl;0)b$3gkV17D?!OQK&$lAIdi5V{fxi#{ zFDW^&KOw7{;G8_)*hN)PKe^6{d#d&d&-6c6|6gDJ=iJwSB!Upn8l>+-KA4t_nqnj* z<%?1c!3Hd4>EgAOXUn>xZ)_2#BAPfSPW}(b0Z7W}U8H$$PO3WQpNPwxacE8vNy^L(>o)@%Q>Nh4F$F?*J)(K;bq8Lw?Cd#5@fC8M=5*qX zng#KNkM(akU*kSW)07MQMX0uLO7-pKDjVpzTf=K*qyNgu{?~^4UuTg9SE>AkB4GZd zVuBN0^iJpKoTsN5iS^rl!COx8v(Br{s&=dTdeD(u339y(=+UL%@oEZl8f2yv%Us4) zRr!Zk1m5sTMmL%>kcfYu%9wl-3C!2}0`D5p{S*o4*3233dZpO3qQ&lrcZcCeraWUT7fVqVdqJRN zhtrDbO~RIaZDi}1qn;=B)gJ^lZHlyw(=Nk1BY{ndB6rI*_%{bZ_r))}kY|`}4BXG% ziK*XhWf=-L5c70~Bem9!Vo_K7z>Aj`3fHb5!9{k1xpG`3?HGsPJqT1}(HSe^x`Nu-g_Cjz)z{Q$+_@Im|}+*_EH+_!ncjIP9&!-c-fl0 zbw4NA{d>PO zQqz^l9bUcTi(jo+4iQg~`gy^7j9X-VERt}-{y6i1DU;Lp2Z5sNV~8wX5fYX3``0z6 z`jLWG?(|guOZw@9Q*) zQ!Z(eqwlSkbR8?-oi2nc;l|Y4W=*S`&6{Yv zO|h|aR^a7b7gOKtCy!Cr)PBi*3apvj+5%LjVf75x<O3Uq@ z(2AhWO1byy&cz6?LcdK_r0#$U*i~7R7Fx}6HieiYHg5LL)aEB5V~4;2`Pe#o_l}C= z3C4nR8|K~9+n)M^sfK;2J5y5HTVp31wmOq@|}?er++HkLw<$>jM!0KE@^ux zsGEF?a~-~qmcbabaP|jdF-I^&@F7tVscFq}*S`#hT-ts-tFj;v6u+ZQ~2RenZtm0KB)Rluc-{2%`N z|L>fTl+(r&Vm8iw7~=|iLgeO?UnP}0kqI;5B*z-$iF>Z?(&EkJjo0{z34KovG)@6* zof$Ok_y-3wCc(39@(~bA6KnH^)S!G!2bZF?Hq5Fj@zG4->3FAe0?R}a*!Vi9%fUo1 z)8k|$>;fC-N>Wp7c~Yq~eJ@Oi2XiYM0!e-up^#eYLXC7kJG#1>TEf9_7hET@I7i_voH zymLrll18W0QU$h4)_)Q9nAXtHbJzcF*plqj&)Z&z}Mu#m`mQB-8v&{|?%jBamk z8-$wC%|I?!dyidR+j+}6=ry+P#n8R$`R84MeYwS`w0#T`16S;>5_oa%6z7paceA^9 z&MqofwZ>nITLTo&vZ@8e9EM9pa$zPXQxY-UL*s;DjR9P3voAT+Mk`+wyDx%3Ern}S z)r_4{)gdV!wjDA=$FBxP$v)xT(J$zFk(SmJu zOlX6)Zi6B@ICMCfb3`?tpj-~U128@=jnaLsK` zn}>d-U9F#i(_Vfo8v233RHZ*QGgPV+=2azr;XSIcPeJqtVav$zb7kLkLlC2Z5vBsM zNJ>I+T@2DyNvDLN5`nkFN$a^l)$vdvRPQ!$w}8LKDtebg+UZ?7xe>=i+h;U2sjIq! z>WeQJ?%?C@jVeRcVK|7{FZE9zTCa6Clu0@+NH}f&m_gTQ4puM>kzuR2c}2VBW8lis z@UHj6y)|tx?8R{lJT0}Uj`vZNu7PE<)wOcA^J_v%(6oCD_x*X&E>3h`_UnY66goHJ zZ8P(444-{uG03JF`DjA$d-pGRQhns4TnbMg(e3rCKu*dp@Rf{779FK&xz0#LV%b>x zPm6-{J;mm&G_dS~E2|^oQ)7fPAlfI7vG+FW+AtA|`x~E}Axs7Klu=A`HZ}>+wNU#n z2|U5Cwi}H#a&l*@dmg9F$QZou??W(^u{a4sOcega2eI?};{A&T@uJvG;hqe#7>*%# z->$u9E4Ivw^*vmr#>n;Yr6mVc3RedbSTS#Czmn-TFJ65K%+mt^7AJ4jt3T7@gQ?87 zPoNCN)~`2rMv_~OX%_Inaie}AI!L7vQx#B0t(BI^!oAYcuMr8_5$60tIMie{i`cwa zb9Hgj>2$D|QJ=bDg6xA>zw5W`yw((W|IwiHW2Sj(tjo627<#HMYa!XJQ+1f9 zVe;shE98)n=RBys$IEU~RqMi4dCT+7@zK$DHrn*m?fMVzigh%$l}WXeB`l29F%&%r z*t#i(oVbz?6HdOFE_{=j6JC z^*m=2z{`Pm&`(s&bfesFU~3u!S){veCnBX0^t5p3^UFMKpg$ucmU5%4o2PyQ>%X)q zHAu*C9++~hKH?oKYu9UCpGF1l|lG`qH8ZF6vfM2l6KEi<0Qrw6RQ*t!|1?G z-o7V(XCWQei0_8Wa9|F=09HAfZ0q3z`E+d;8eIzK=SR0V?^BXuNa7uS$_EsQO0OQ} zllcdWC_Yr0#l<liaI9E@gc!7?SnCqNO$); zBq+p5xSPnlobmmxwCq7^rKvNp@i;sbu)udr{F2*zC%k0;;Z^18jv5ZVMWx+6aVjo1ZC^zPK_cx10}p# zvV#U?Zb^mxX^hL@U#ZQ~p82YkNG?+y2}^D+7O_=ha)Ne-eCMLN@LFjf>{`gm&3Uts zUsQJPTIbL1Q=cSw*DXh{5`I# zgCw+3X*H&3{MffpTiJuRAfg*X>1;|Uy!N7OlCLcCP)UAt>xFofBl6a#?>nfpSs{> zz-9KL*dFUOnzO2NdYD}Svk$sbgwo4*E@h%TKQqPuU!>dz3yZD@qIAlu+Tc_A0rX3{ zagqYYHQ|d~(L!y#Tig=diA#yR!_?GL`g*MRLm|&9J_*NSVUASct?y$!?(=9(1 zFZzS9(-RibrXq>CraO^t30LfU8Z%~6%ig8GrY#gwS~Z=vtnRmHJ-tpHqo=%q!d#GD zwqsMWR1y(d^@I#FGvbsLZ1i4p0rVaGd;%1&Eap!(DWK1Qy16d$Z)>f!h%S(v($F8AreSc&jqPG)ibjd-!&Ibb4i>dtI(#sYEMo!Dy1({aZYI+swo4fS`ele|> zS_*MQelT{7Sh7zaNo;^sPF9PpTP-)`YY*{1A}!WAfdrC{0BRt3VT1- zZJs^7^E#Z6?}W};IB5ftjcBToI#&_RP470R-v#vF%^D8ZgD6BQY}e_%0@^z)6ZnS5 zGsCGf%?w)%hBfg=Smzm->$ngg0RDJ|H2l#&gUO&JQbqTLtY(==jdF=9b(F_`uZ zT&q7vc9m|KMc|{IWx@>_GWy0#cBh;!D-3t>#E(OtuxL|gdI+d^5wDp>WL0EMk;B4% z34*G1ns0`94ort|XGjwLI4o#_ky!%3Y;0^LUDaD`cKB#;TV~HM+XkDjRwd~B#Xfj8 zvt|+y!Yx)%0A~G3bkoCeNStX*Y^}i^!+Dr3bGoDoo;9T&ZqY{DdLCzYc@&UJm%&Rb z-7Nv7^=IG6x8#G-ufT08P&zJa6)$Z4i^|$a%2FDA)NS^%egG;|t+ZHN+_VK~(&zuJ z>?g8nT3p_*ki;v>$8b9txgx4SwwV!C47d;6ZPB4xS=(a|BHrY34q#v`DW$nAd2(`) zf7Xeyt>T>tE1MCF4C1&7Z#8$vz#ED`z_E4qbQgcP?}>uu{vZskEg3X0$|*Lb-}PSx z$lFh`wJTlsUBBMW|IQzaaG(M&xNj3ZxI+rz0%V%@j>WJB2+9hU-f42iy)I(P=6Ufy zr=yK4X)OP{k5ugSGJDfqBF24syH`+Ht-eX0i(-n(D}817!WrJny@fi=h{$Y$+O&^9@Ws@lX~kd z<@g{LgcN`7U;8#Q0p8w~lat3sc}3&K5YKNJeH}+t=NYeQ0p+pC^=HJbd*q zRx?_X{@Mn3TRYUQL@-KPH4=5p{H$S1Ns2vsE#Tc7FIV^KDG_r*ba6&#s#U~2PAO{{ zJ7+e-x@jv;~jXbHyb7gBd=HO*uv3@eM_e6S&vVJ0;Uu6&8j zY>jKQwK#`o@V(6!SCIi!Xs)GXWJMN+$r4R&lOYp7GQRf_tP#ryPH*@AnQDA@n|b0= zvDe;Aea@N2!f*OS<3^@C<*=@Up#8C`WYt04#%1Q%9KD`|5o98j|ss#1`;dWBEx z-rfO9ayQfj{!p+?}#hsG?w3y zjg3Y^Wtb^rp*VG+qfYu<@ZjEnbTJF-B`DqH(lhDGkRgsV(<}v3)*_0qO6}#eLwhhm zMKxWn0=5SO4ofXn{mQ!lh9BNI0n0o*S((|ANwIKHEL$zc>c;OtG}vNM!HhcxA}i>j?+YP6x(QN%hm!X7}19uJRub| z*9rn^7wb$p;o45^B#ut<1a0waJGX%N&up4?(Y+ko=xF^y`d(0TYP-vq!GS|C?apcf zyc;gLLj|*{2fqcUKK{O)1{xbqGlE1MD&eZ7Z)s36ZgO6p`acNSog|q!m$Ve^0rlJX zt3Sr#dFC|-xk^u#W4`veLWNTXXrfKt#gnyEMWT8^#UKt7h*KS55n*q96nkWc;=g0n zj$H9hd9Xn9W{p zVSftf#AyqsAS{z8oLjxTqfXww4!831qJd^szA!cI)y6er#yVm|R8#YCGYeu}oDm=} zxVpN@ZpGIGNvSJm$TsL{=n^V$E`!OM>+uN=ffd;peFS6D9R}VRr)^KA)-xKAj%Lxy zM}K4`Y=?=0p>P)AQiE9gjSyv<<{zyeNv@J=GeGjLa{Ou1$&%ldX`jRy-y{_&x}E^Y z7t3GF>TA6=FwdIkj0Ot69ZXM6GYOY9;Vd)dGTNj`R!qvlCN%!E-`>=2F|?&#p~>8A z6+Q}lYR8P47wH_avg#*C?d4YxR^91m(Al*P(Otkx%Gy+I*{mL|*4zY&*wu!I>82N< z9vU{C2(EgZPB^!ze@?=`9#BI=?FroQVolFSS4}Wx1B{1&oYJ*yPT7P~N+X(Y`Nu!Z z*GsYK8@`{2o24{BEH?{~rI>{dbh}RaY3#qhWXf^!x@yt^LWzbVk~&*PO(58g(G|a( z{varaS^Yr}zgVVfB5*2eC;EEd3T}k*a*XDZb62$*en?$cT!m^3&_K?YuC>IEY5)%O z=M1{o3bJz>N_qQD?raQj#kWHnNmfzU+%L4^cZA>AC_%CGqyTbA#(DJ^zrAYw1wa`v%r7Rl0P@UiAW}8>xSr6XXA2 z?=67h_};xwNN|D#cXxM};10nZf-}GXgFC_91`8hCHMj#PeB(+IG2E}J zFN*ptDS9>yDnsF?tfACrkYYav77~e7s;!*?WR`gc#YE#i|9XJGz|vi`K|zw9D$oV+ zbi2B44RSoAzj6TUTfb3Nqsnoqny0b6>|cQX$R6nnf1oCB<;-`b&-Aob=3Q;|{E9Xx z9-{%<_Iu8{aSXk%`Kk_}(AN8vE-~qfeLb4{U*6ncc4z;&!Ji)U1;}^U;WYzz$gqT3 zC7Ds*BN$5R{|U@!wh-m`gNFtZ<;Yh)szhSL?fl|Sgw2f;9_Q8gBGpiuz%{h6Q|RU8 z!?zy&^^8_wCNLP)7;9?FNl-J}Y9Lb@9mmp)P=}5HtRkjis2OFXI8=8;^*p`Fa&%7A zQa2&gKaCEfGrqWp$7o4FJnF5p2y5CKty1i7q87e#zivLX`=DXD%;a%sLY1Ql2_?}M za4k{<;5`lNw`h$@jQvoYt~W76C)KQ?n#0T$@Ib0ck`1%0^Mr-FE(4>+N)$sq7oQ3sPhsH~)r0f*nWGV1^>wWl`_RmVb- zw(kyo=-cZYkh2fd6~bC{N9MP!5~6+L=#xLtDLbt^mjMDyKitsyll#O)5;^%KSYJ{i z&44wy9tgz=8C-8dY8y^S?Dx&Vu`fy?8SH~W<#$BlepcXLuWmw=UC~=KiK|O(l?1;( z?7nxa?Qj6qyp8sHb*08h^@sLv#tolNixh<=Sjx0QyfU(~G2<(DV^LX4=2*E-0;COO z*nvihC5J=rX&#RV3Ze{(aC^Pi)%khSR8 zQS4ISXbCV@Kk2{1RYaGFtCniv#}O5yB}w;>8nUdRnA51%rsbM1Y$e^8l$4U>z^ZIW z%l!2(cJYX~iLFDb@kWSuk6L}K$f;+`87Y00Y#p{s z1qy(dKP+Gpy;y-07QN3(5Z|WS|N4$GDKa`Yx6)iO#VVk{Y8YLhO2dvPq;sRx#DSHe ze|sTRJV9_pZ7?IvQj=YJ5RlH{mH}boC3sk9V{cRS((1G*GX}U!?5^zzDktoX5)_>>IjUer43?Gu^OpZ_1OMOa|GnVGlzn3WRNu)(!assF)LQr)drmz zMXI&X&9rql+!K5lUUQxy@E&D9ctR!_q;1}UiGRmHy!!&pjo=2cC~w_p{jeyidxqB6 z0HO_K|4LCLU&?0mhlJ5JDoMy{rLl7qPM&PB&PX6Q8qJe z(K}~j3VIj*Yvnl!VLhbyPU#nGo+0iJ_5+YGPG2Z5`vCiAd<)ccp>eRjK)b(8*r=s#$0#6C476z%s;w!giIn$F|0}Wu zmqXeA<*Me1zZRafVIa2n&~|P`2*6R8_|w^k9>6!lPef8od=rmW{F)PDRFtL=Bwaz2 zL!9(FTH8GeHx4ILU_8VVblIS*#?4DTVBNn4-1Q2&oB2L(o!qJxTqbiB!St=}6S^E> zsg^W!0Q?w1kmUB^B-L{+Dlg&~6VWJ<&aN&YiLM5deZg_rZH)y9iDs{riSqoycIPs2 z6`V~H_ZpFL(7DmlCoj>qA^|7 zjWDPD90~&1btts9@SU5Cp4K1U@h!Hq9%WKEZhg$Kp0kGQ3b9~}PPYlZd!H2=k3NkP zYpe@ak<)kO0Xp19E*dxP9?GlP>Sb>1k{CKY;21HJlCn}IW#w76=l-&=xL#<=>KsI{ zt$Y5!lrjENa zCH_am`sXD~xbF8XjQ#N`R%pA&6CtaHQ9U3G8grfUv|+kg9&`9N`hS9Q&{<_CtzDCq z@$R#3`OtWayHaX^R~RmfDRQktVYyS~eflx@n{RWP-Fs>C_@&wP;_-s&|8`~r2k{NE{r>U zH^`^Yg0pshWdS2jG3eB!Qcf<9g+7`8Nxj*_)VS$K^nJeZ)}&c+a>k55LxYm=NG8Ej ztlu^s*qgYwe>8+Oda88Auk9bB%1DxN+hNE2(jfc~)D5R;W|QpFlM~u&YSW(dFpcCL zyd_9zUC`8-4>95WZ@JGOt5+Df6w?#+iTtzvK=sE(KN$Xsi=lxTuX@%(HaoD@0yUqKar-(-f|VcASP4`+^IA^(SaFtP%o<_pg;R+{Y8$+4zJ-=58AR zsPw};79^QOz6Vu)VOjY8n0C@i&w#D`KI8zzAJKy9fclFd5qY@)I!?`HYIPt#(V_$- zH#Jn7fXmPr^#=+!X6V}UTT4VlysGjtp&65u21>E#6fr`jQ%_=9wBl;obhJO1W%FvI zPc{*rMlQ(kGtC-Y;BE$BU&&H@m1oH}gKz7aF>EPS9iX}h#U z87m!CN==wh<9J5u&D z=9IS%9+yympn~>=?`34EsQ`NocdQ5M2e>V$82WFp@Z|GzmbchpGjp&z&N_1%Hghwo>>T)BDG)rPys+6xOE)dP|;yV^9dTWqZdRky})R#-?TFC5xw3 zkfQh4_wmO(7x=okEGVt^FSZI?ti7V5$f>JQ&k{ylYkVQHOsHyCpLZZOuRmr9tb%4c zzc}{~lJ`lXnJ0D{Q$YU`cz+MY}ESXwB>ilN0{qOYLZ9>X=z|Y z?3S*Szx6Y8hWN@<9I+ik=5B{O~OKmcjYoYdoR; zAL|#@|LPafiGtSZszd`_&gUJTkb-mwS7|9w{^$#Gqy+8J3QK=~Am1T{y?}0BIbU-) zp9{JR=0{_)x!fpJmdNIC9iSA3wONLCV$tyU&b~2I`G}+Nj9=uU(;JI-{R}jVd1)X)}PK=r||o*e!9{0!v`-hEXNsM z!OA;bDEybLP3$-7qRohBW}2&oQI$AG+>%5@ZGY|)mt#BL#HwMagb$_1K75eL_jT}b zb*s(cJbGhddO*Qf;I#`bM_3p+Y%B!_C(55RRW>tNO4{s8)2c(u+sE(2Nfp1yyjI>PgEVGoDvAP1 zb_4v$km6L~85@6oC$B0c_N`VP5U)eY$q`eM2{F zzT=Qvez$`GTY3-W5Z-;CB@y!ORxT-muG^@*yLLgf+(l8XLs5i_+S4EjMK&Eq^M}a^ z&MD56P4zoXeDDU$-SUv8uFS@$IY8!HDj`Y+{3=l=TNp+X8KVoM43lGj;8Vc}EPPtD zBk9mgC!-}-)m~o)cwKL)20uL%G0dg2<|~2O#f_>mgMv&u^&iKAeJ_$eb<}hG)U9z)xV}F7NsnXvhR!e?i0UITZ5d_|R$`^o@$9 z=sh3*mW3GzKggFz#s;-a7deA5RJNnsERBmaf~!{fIK3wSnnQ%5(|J*n$u>HmRR&@E`t%R zG-8{h-N`L%qIZb-y}nCB6+tFCY*;^QKeP+QRTMDYs|i4(RPnP5=yT zBaMiYOX};BBlz__wr+l5^6)^#A_sv_g{aCsI0(Psv;0`o3Cp#8HSG?TbBn5P_+(_* z-?WY!&c&5iMDuQxfkJ0rQZpp6o%jo%8~G-vMka8A*cGV=V5u}(<1??x_Jf~@&y#5T zl!<4S!-f*2z>F&pnilok9n*>clm54fyHJC!|4@U3=`eUHM{|}R{z35;jp8#g+zC#+ z9L<)?6M4K^JB;Z>&kw|w1CY?~zV3W<;M7jIJ&_XK!rpIo`#(gVdfHKOIewcgr1 z$Wgqx9y=p|VACTAP|nAeN(I(1WNY7SEZ-}!_2UX|S&|y#X~jMJEH@X=g^49Fvw0kI z>|;1ghS`}+R2$7gV}rP=r$Fnyz%Atu7n*jrboZzGB@I(A`Ygjn|I`}gcv`ks67P{t zB)Z5Iy;ND?+WpMRx)NhIDi@Gko^0k%RoF_@({3u%dnloOio23Ky@3DF8K9w&{|Ejb z;XlXz$L&8EIq=?&9Gx620d^KpP#!B;>Q)-+M>xWF>o?*G;a`&!9MrH8$kfE6zG5ZNFpwjn z%ZHQaE@P{9f0UAfAsqT1{ysMLYc#eh(}zf;CHP(Pyx5@p@W_#;E$@8Wh4#Ds@z;h$ zk%NlstRIu`KM_8p$a1Q3fBjG@PV#XxXs~Z!YnSCy01}lW6gt8Wb8_bwN@%EiKOrGT zil6YEP|zN;$OuqBl`?*^5rzFhI~Gqffc_c`{nI6ZPXXa8)?aeoUvl1Ga^7EZ-uhp1 z-d}RwUvl1Ga^7EZ-v4*Vd9WY;Wunz5>xUa^;}808tTg?Yw3tX+Elo@V*p$|auaJF= z;raYqtWvf(9#`Q#b7#GVyf1o`NK)thcZZNbR#*qtzz^MdvZbGEYsmx(<;<*U*t2$b z%~{g;IS=Y4m#vH!4tg`GIO)ZVTfh8R2pzw(dik?)x0+Yx10KCVWOd&d9e!Ao5ZiAs zS4JP?MYWX@cSTW)N zqHt`AD3?=GyyHonbqC^ieh41|cA^gQ?)}%l29DYGxA%S1{Z3^q_8C?nvflYn=QECc zY1YY;W!1N(sGkl2H-GA68TVn#ECb5KMlE@B8R-q=3Bs8u+C6XN=Q1Mew8N@0;f&r+ zpY^U#|KK2UgvY&TQ3DQ25@ph*R!d2B8f%q4`2L354o1Pz0z{ z@(p-YDszqkK7>*YyX6)Msyqt#ycDC&ccH;}pPXazeL*hQ3F)M;<&Puw3!Z^6^*?g? z6-H}cq?Id8liY$bGb1y0ti{trTmc*U?qF@dtCk3>fD6kreeypiyNO}`9WCq+D}6{a zwO_WP&`67k`uY5RUUxA*PzEBk{dg`JI$POG)@+ynYL ze6fAE%{|N;RZA}iRxq}ajC@1Me(=Sj^WnP*2f3ly1x}MJv9t{6(8>^hO9<|4MXL%q zf9D7{WUp_2UG48?pG~^dpZ`Dv1KUX>7y{JAUo9)RN`R?L(dTr8a6X4eT4nhZ-dFk(VC>;XxvIwm? zpcZA;(6PlT1INEPas;x3N%J?KpLGxAx)Qs7@w17=MJ1LZCIuRh8NVQOxIqIe^Vf)F zL&;dw$^v$B8LX>xGQj-oT4vBfKOq>hv%5j-{w%_JQH@iTGMxXB0;zGljO!=~a2eb`Q4UUp}_|s5LoFzZm zCT{%qK%9{hZK%NjCK>Rz{RW&$jZ|r$x+a)~yhD_kQ^{|3B%QR1KSAzdsTOT1WSiLW z;`lvCdfA^M&G5Ryxlw5*TU;(FMl;s-{M~1o0=hd{9?$iEWdo#-Y*X8eY#X>GS9zzh zQ0jj~NCT-9K7GIlmerA#H0KVxcAs!S^Sev^ea|%Yex`#7E)Lp z`z!jRYd0#z=|Np_NWY-izx={#rr&;_d_Y>_3mi$^p;jSv+wzk!UtyqHSjRJOtxH_K z)_!`JDc#@9`Gk8IeG5}V+WXrm`u#+Bbm8or` zyxs_QGAgL%?oV6K?of0kj?@enqjvuo`2VN;KlcA$^8d>ISN%zL=^@c-cd{^9?@Kz)QI$ADvp{|5kQ0>TPN;1H)o$W_C>sO_FM zrNY_b#B&OipvL_-0N~qKVc}t*VWIz#{a*k;40bV9SQ8LtKmr8^+(m9}_m();G$kkY zrJAV|7$@*QasYoF|6d~Q{@-Z8=Cqt?gi4>5oCMK=3sB%;pwy>wrQI{4=El~N9UN%! z(+Bns$HTW>uim#HT+j;BP*~XX6@Md7rhTYFSr~jtDWY~M(t*!4AK&f6;1!=?5O`a>jlLlLIuhrxmee#q1EvV0hzCHQ^_6Z$e5C1O1|8j7=K{?tzqzzE=kthti;o^rvn2 z$z~yBdP3;+Dvoc)YIP8U8|1S0Pg3V$m>q(Z4_N5cA)1C0BX7(GD$SwadZLG~+a0?G z^+zC0S4QP?cSN65uqb~7wU1{X^|wO?GV)*^-@g3fQrlWx5*%!#b)UK_UZvWih%ER+ z#kOVs9}P%eApK^)b7VD?Nj&__UTLA-=2H*V*AQR^RU_uTEX-1DvT)gt+8vdd`V#^z zOJay-&SH` z+B=!vgzC%VZ8;7m>qRLk9`KY)y2l!s>`5i(U%XVGg&Pjv#DGA ziiRU=*y?jl>}h=b-#(aM#uX{z)31*X@xr)>S_^#CXU>>vgXI$_(jAbOFAqr7jr&)P z|9`mH&;j4Z&DhwI<41-RJ%)K8mGVhm)MPetSJ-H*923k$eq*-Jq4MwD{u2rLJxez9L>!MDJhX>BAJHMriYOb=)S6x3N>qN~5SvsW2t|gcK zHuW5HDanYB8InU2^kPURLnp|0@%hsLgUm;JxOy6OKe~4vyrP7LfC8G_7>r@UqCTCJ`Uj+K9sl*mT9R45_xW2qB=nF=? zko#)S_qPhXq|#Z4^V5cwTLt3;q^faoypcuDMX9R2blXcbd}l%tu(ERk5|8QqReP?{` z!aT>+jc5;xai%VHV4{x|PK;jtR^ONua2CRaafR6M@>BDwq^?1DLf&XXrYwIW?v6MO z9}84v0_|g#QsS4yFOL+(vZjqHdm|t^n>QF@Tsd_v>iu=4JYHwfYWdd5!KPiKu)bQR_9%%TjHN%SvMm(Vc7YMHGF_gy`lHQ? zeMdhpZ`VFWH4bG1Gi1YvG`tHKQ;N&#OZSTMZMg-eg-+p zvBUrc18ViCAx!_+hf#0xN2f9uV9*#%6w~I>xN-ew@PfkqIk#*jK>qS_F`>Tq3XkDpPHA!KS7&l&QHvX*cz2HNXX1X3L>4#0AmANP?kkM!bth-?GimlCe^~qsv zKWs6`Q~3Jwo*eN)J-aZc#+uP@__1tnP~oGhp~c|ZA1GS*o6^28r&yEmkEmF7j1CO~ z%JP`Xqmt&Wp}Ao*El8iqz9IwESYLDBYB?n`v^(XKd{S#k0Ln69F3vO8zU`CSIE|YT zQ|myrm^-p4Ix;eYtWB)M!q&MHU)>u}YQT0CFv$&J?toL;!^J~uwAHO_xX0?o(``K8RwX3p4 z2#ThSjHJEe>g$eAz;0ns2YMyCgs$FcpVNUWMQ8l5bqVREG%Ha)`p~yNA-Fj|#xjRb zn$``CD1yGo+S5zev(**Su8PMjh)YMdhEy^1K*$A3nOmLFgGq_G_ND5ctCOV6D7wn+ znW#f3A%uqDq+CJaf`onL&=n7jF&_mE&`kCDHO4n_?|)6t=<7E`b8Vb9)|?Lrvv&h9{sf2o(o>)dV1NF|f)mN1q0WuB?0 zXAvw9WTxJ$RMtDz11~l?--Cg=Y&4m7!WcW7mOs;z?$jb!L2F98pz|>;;ZnsaF9OAo zeuW5@Py;IJp05t|@t?Himo;__8|Idp7-rKFjVAv+GaEWgkTG`PtCgGt)s1{y$upS6 zhWj)_%g>Wa_D77{uVI{V)%|9uny**mk90ic{;r?iM!zWIjC1opP`~l9Dsejqt<(50 z)jcK)-EiqelA*77xJ4E;%X63#$qWZu9QLItA&DPC3rf>~vTh84#1@5x3aBIzWW=nW zIodk8qtsej6db7TJHx8C*UBpNs?`KuJ&(S=k$Jwn;!Me_iJW%*#cQDD`HH1J8%+*HOgQ^ar7wvNsZDTIgrsfY0dg;#zYg+PLu4U)``5oc;MI-emqD%BUU2emr5 zRrA7!u_)M-mCHt*ll`u7jzt}s=BKyi$)|g)lUog@QH>ivE3*!OUJHIFYJ%T7 z+PdPCL{dz0mLSg&?9fl~IA6DdWt*n4c#)C$wgJ)nI-*XigKnbh6U95?M#{X0!tHyC z+pupiusoH+G`lErf1nu3o80v4=k_|wM6QH#lL~ld#gC4hOSPA0Di8cvxD*0NJhAAM z_wV3eC8;m7*^V%#hzyn$V4D|gx@9FI$r!KSe-Y!s28Be`KBnTtg&Bh?_xHUTf{oKE zcRW%qr?xB#%rRg5oeT%aQ;0!x#Mzs4(L*@8h-)qWz;dpuqT-86ipN)TMvve3nVl>K z%OCcLXwlDg@fAnX@Db3Oxck30mpL+ws%d}+E`MvH7?ZHw!~$8XgAG;^vh5gZRq*Rd}*uz>lkv>14GqCUW7 zy1P1`jXW%}z+L1CG69B<=ac}EHICAC>%Y?i7joz-Hkj*y0 z_Wlpl@Xf-3G; zy}tvfZs^ia+A#1Ho+7Eo?nNlm(*zU<{)8$J;`K6$^1YDawxQZ6Hx<}F09Z_Xj$Wu* zb+pl}R+AVsn&8YFFx@fVD<)6#*`DSk(P%+58AnQrSF3~V$-rHay{hIhI`ZMxEY2=2 zC(K+}+}d`-1w0VS-tlp8sJAeFOC%E>wtNC0gV1!?>zj*x$sRQdmI87sd*9PAx5>2t ztNUK(uXr-`qjr@>9XMvo!5;rC9rzi&%6VM>CzV+qADrB@E33pA+0E=jT!?MfPHTl` z9jV|`OkBNN^?%C$1 z$*>o;&j-q=7utVY(35B1nM&R8)~E%Rr{uRX%4x^8Q?*B4$GWe3j5zrzkT+3{4lCh} znV}ZW6-Y#CfaJu${mA-3>&r> za;nCOH7*UkKTr=oIb35RDid{#zWg-Aw}s^|eY}W-%B%TedyX#ET4$P7!TNmcVRjvn z^9Dqf)%G>1t#VHYmLfi->X}|Vd)|Q0u0Mt8@5BfmjP(-SR#fLYQ_L+ICwAX3-wxsj zXFhYLn_c)>d80_W!dkLWCC_r)C3m(W_2ttUf)ea9fQxPi?U6%2%C zfww8XL3-$OYES;8%G_m}Wdoz19GJ~HQQx2ipZFJe_G->REf9=4qup#TM+=f&1u~4x z@rnsh7gG=~IV5}J_!v=HI$qI=Xf<7-F@GeC595JP5!DE;FNCEE`Yw{|y`Zp2vYX8H zj5t#AmTp->>lhUDQzHz^(#aF5Wr*)#1?ILM38I{$+>jZ?LTKqrUN?T;RN6a%DnB->O6rpA zM4@l^23Ltwbo>rs2_Yj_dZk}(5v%#hL=>Wh2;8R_+icyD6Aiv+4en;! zYTX~J6RE`U`kyc3J8>I zIup4Yk%F&AQJ;pWIR`sTGrvEc3g3dgj2XR#f0lHPtjJRoKyp8oOpJMjZFVA;huw~? zcg0B5#P)bVq+Y;`N{F51AL5~vVKLt3ty&f$NE)4P*)Q%3Oj$Gm4jZc)+plgAR}4S9 zda-cq+a!z{>G!7;giy0E@oaykre6b!@L)%-vlbI`mAc>jfwBta5o%&+qCGbd*;Y^4 z{iZ(Hm1~(6mlVVbFia}Sx`{8Ri;-=vxCpMi(0o=*=y7g8fZJSTp^H+SyhNB_XT*=P zfk{EvTkj9Qjd&JRPW~-e=Vx9{Tx|=Se!}p((RyxTyOpxvxhV0H@Px-m+2R3jk2X@y zz&=K1*^HDW?%Eh@ZMH6_Yo^rBu6J?L;`h}p2~l|58rF?H*9C`&c@$bQs$wDf%JRN< zy9g@bDYd_HwXH;I~-;l zPbKbid4vhB^wgh9V9Il=9kYz0)R_dcC3lV=<1_chQ zLIZKeVFN9y`W^4o#u14Tz4yv|a%A)hP0Gn&cSgAM#WdK8L*tN#8OTDd^O}s2O~lbT zb3t3*JZzmaeNfW304hm22?uHhp4CGtosZL^BFQp-EXjGr3Cx@h84N&4*jl0YZK77-tnvx^ zeqj&!^1&O%)9}$<>LL;WwJS7PP>KSOkC)k22SAtsk+=UYA6Y*;@~Z)kI}sXPZu zzaU4X{be9Av+@}R@N8;83(}Pxxurog3j6T&NLCL6*dFDjg;K$wS)n^{yx#0YuHT>O z!2BGOL$#+qVS0^2}7*JYmZ4gtanvR#TyeQiC~1YN(-nf!q= zc4Zh5@z15{b~lUqvQzi%`t#1`JO4(DdY+T3I4M^9vd#!zksK6O&BZ6pC$MWAi36CE zNg+-v=2bL%&aXEm-d1SfPaxjl(1=oby0XM8Zy8*nzI@a zs`Kpgn2zc&nm-x5K+ciwr(gbsAG#o!T8dXqE1*no)vW3yhaoj2imr(#UGL;}+p@vN zp1HNajFT3DJ%-#tBt;w}6&u%hK`k;c?ASPOBzDV{lqJvHgqk%1&%$0cbs&8z!-TWl zHfHb2nZ(VYmOQQiuvG1f$-Xm8CQH5NT?RufFOI=_ta<*a+Hs}e{$5>0wD|!rz?nFI zQTnM^5R%lOxn~d6bA`(7Iz1w(TtLX92BF>%VKSbr96lirR;&$T!P)otd%Gf93;z9wqU&U!9bxcRXbZ zfS}*YA>0^vfeVoX)sM)u2k|at^WHGZhVD!NRyCsv&jF36^m(jU1B*+v(ZM|^lcC7p z7zm6oS%tjEDCJDdMP;$QLBCPj+vHD4;!80Pl~}4pG{Dj!H7DP5D?X}B(`tz zIj_3jOr}SE^yJYf1HkLY(JN1u0E2+{8VW5<-=^pr40^Obj=~%VMteWEzwH-&K>=)F zC5Fp$or6mc9~!e74KeIPJS(^R3ee#AUuE>Wi^tX@v;DJ|Ywy z5D8udBhjYbv3cG!OP8=+dJI&IH3u=1^*f?>Dqamp1@9_fX68_i4)swOOzn(Hi|vuK z;JMw96UKlWVp9k^v9IvdTjY-x$F@faIbJkJgH%m$@3MxCAhlsAp=TK|3fLYbHfll*oy_N=n;=T>`Hi2`zNbb)!dxZdP+<{JE zes7c%N{UxZX1Yn=eX>z~`zIA$a+Jz=o?uvAsAITQ&)*fO*fyCT;~L#2)}B2({y?oK zy2z{e(5=X+>$-Xg58PZfKj*P1K@7mB(o?A!ffqpP54rkDd6oUz%{9*gu8T#&;|fX& z8MQ+p<<2eGv2XB$X5kU=+DuuT1A{XK->H#G%oSbBtMKcVN6(14JTT7lrBc8UmM|$r zqrTW$YtQx#1jp8%x3Ircscin5eXhG`!PhO#k#bxn&6=!XNG;P37<&sg5Ix0Rt<(3n z{DC4;$0w@ikJ;qckgLsayau?YQt=cMI10U!kM9WPEAR@3yQ@s}VeOU^R=qUc_}Ou| z9(ezTub^nvX4`%qB*qcS@n)ywWelN)dgIhPks$FP{++ z3!yGvh@X)#Qz6TOEyr?@^TZI$v8?q%EJ)0S0y{guq?k8ir0mj%8kxX~?7Xdb(R>_1 zR&G=A4(O0fX|vWm@7w-y5+n#ym{dVMc){yQ!0S25_8N|r!Oe!7vF?z z>tui${nGAsLO9Nk<7T9p{K*#YTLOrmhpAXUex*lGRsN2r%{n=Rrk~--MuU0aYB6Eh zFYj!siJHKsnV5Uf|BW^?$dy0T^MI8|UMj0T{4pH}e20V{D*M81U@tzGTWJ1c71(Wi zNg&lu2+}(?RID4bR3#Av07Aj&t4d#!sOfQ_pufMX#E?_PoXNd2R(bP=;puuH4)2(E ze}-QdlXrMt#}0hyQbQG%!&~%aj5I{G7`?E}H(%3Q#qebg*f}sb|6Pp89b54AX7$(P`o_(%vB}rUg`n(JzBUvayHUE;~r7?T$?8l&SNJHb8 z^PrFZ!2UeW-6NBCq3xN3TO_V)R`lW7xhssuYW!@iW(EsO&dhHzGx&4zh~h`ep#h z<`0doC2k@@Wvc}a%e%)gw_O^oyO+A{(J9zYixe)vJGPk!f>P#LMD3-719rh|PBZ5s zm%K21DgE7IWCpr=F+M2f!?j)NH&$j7A!8l`dPNbC^^;v=6IMlfJEYn}TkX9wj>-|*+{%u3ygKL4_iU%4!>&0mrJKq(U5EbRJ}oAmdGR3WRYjdnSc zH_@vJrNX%AJteFv3u6)IF4NcOQghTcBBD#6%tJxeV>zuaj(Som12FuFEAab7^&C>D3qG(<26ihr zugO2Waf+w5p4EwS>}dq_3mZ;9MbD(5ZyW~H=;*}ti1O;qt}P3ugDjWVz0GkrLkOBQ zR`gC5^-k_Ee*J;s8Z@1d;T_8FR!cYu$7$&5U@m~tBBD7r0Bka@tvz{6Ej;mHXWAy! z9q=n%7V;DitE=$lLZ$IX`_Gw^)u0OVXr!p-yFr9mP(yGR9aIE*Ek=r^hx%gX@gT0n zNWV|^TW}9xdyA7mmIuzo>QTLX1-?8i0+R0Q=1U<$YDnOaSB(Oygvv85_GtQ-#nabf zj`Ou)(_OypXLSSf-*0~1)sgb5!nb(^^jW8WEbF^F!hWS4@DxV#aP(s1_lz^G-LKyZ zAj{eiv>4;%Ot;FU+zAd=qZVh^VY$(AS2~glzcs!tq#bq7NqdSG>}O8-1XhHTNbqRw z3a;LgdZB_ui7Z3oHWqB_N*x0Z-pjzAAG440C+}vCtE$|oumoar>V{V})W${mJ3a=S zZ&^L|UWFOB7^3O2b9C#~lG6uU*ws&nCbS}ciPnQ5i< zzS^^!|9CK;si2*|f2Tv;IiLm^DL*=o7hF7a=SPq8u#`+DSm7nXwaItLIjtBCDyPS} z{Gb&f5J9`T=B=9M6BJO`jvFUMRr0e;7;DGH$g$`vh5uX-FLu8%(lDPtx8ydjF+Vx{ zQw=L-SUbI)RqeY;a-*tYe_-ETQus`uk~w<~mbgYCFk$Zq~K#mlhm<`?_z>zdB$sA!5VgZ$W>9wc37x zI^NJJ`;7adol0@n=Eo4`-K0`XVSpkcJLtfndSC z&aKAJKkkrc+fVaNnZ(Kvp_cBpOn&NVei3~bJgs@^AP zuGtsbtK2Y_Z50H7V_eu6{+_R z#KVGFgpEBHicO@-Zc5=PVv~2o>BlYiotoQYnHj|F?cDS2WO+%Bkz|asR1&SC=rvv) zK>K;&b~_f|!^kV`h8_C&hF2Rm1kxxbQ3|OyeXk6(cs^(s`YJDE{w8n8(Q|3|dWjvH zJhjAPtaUcxym^mNwG4778ldrMD|YHE{1P`-ZYTBx*TqoLc{kZjEK$3Xg60tEzuR%y z1#{184mh)@9lR_Zu~3cu+|Jy269%U;v|1t8wf4W&b3*38-eSuPZfH{L)@ zmZzFo<2SDO#}Pj77Ppinx)74E$};9rAovUt$%tr};qP6Tk}{LYtCp^+G?~?^>2t{o z(qulfYV&7Gr_@DTJ$Li{IjRhRziRxPvyJH`1IKuqX0=u&3IT{-W}Olkj^y5LWPjBN zqv9(@{7hhwu~INfQUju|vws{e`fdJYz#E#s_`UoG(xu&-y#+v4O}8)p&<&DGw=~iqAR*n|CCx)hcSs6I zmw=#jgLI?P5(-F%NJ|PTA^G1A>Z|zr`hEAFbN}a@d)XWIv-ixbHEVveW@hcF-AKQ| z8<9gTbV`+)p?zS`nW&p^uTVU6mu9d=Pb2O2O_#en$(djKJSchpu@lsQEYPBxQ# z_7?JOyP969>D14PlsW1>PKj@cQBYKN6PGqwJ}E65>)GEgCAX!;cU!@V&tYz7Xe;c=@5|teT#I&s1SgdOOFbbkPGQkGei? zW`9muIFU2H--V!R8<;wqUo9dzq4$!*>fQX(Ql;A$%?VlZ2lC<^wa~9~+MmADlIzeh z)*7qR!}qT(lxGr>O2}S}eiBcVEISscfdBzse08en85bY}jKzLXx&(rY)6q z8VCf$_8r6ur!2tah){GS(3LS5h2N%wA}oa@fS!JQ!ar+RfL4%)g{;bCfWMamGo$~u zQ%0d-ig1Cy%w9?o%24XroW?%#$k8ZK9@_SoOm$aOU+oF>g$k;t+y_ji1iQyM8#ga>b<7dqMM# z(aL^HK35l)CU)wiSH*l%c2uaMbwXokX(2w8m5SqgTU>bRIW!sLXkOz{K23+Qfphk> z)*Sb(bIPAc3PCs9NJM;G13Sz#&TGZfVFTaNXl?g{Gfv2_P%ECQNi*tJnXP#{0rWmJ zEz+R%_uT5(I4ZMzaV+DFVs{$O+L<~*)#Vc4XS8swoE43_f>ExzxUgM=qQblN^NenU zKM(L3PU5<8*~sp`_kHe?`^xd?_mS(=nyQD&Wk|DFn<6Hw+)M}-*I?f7JSbF9a8}r~ zJ@pMtRTmUD9u5r(dFPJc0K?kzk<@_h`i97D8{DW9B<`^j3GIFqj*)b8PiYFbNvuie zD~$2);iM_KRA=jD3(M1Td$|0hx^EHS!xY?3LuZ~nQnb9TayrHJI(xIg^_tXa2c7q% z_r`L|8(?B0LzIn1=#;_8knVj6PGu_4O%zHA z<}{-OkN3!xI66pi4K0qObKx+Sphj0^O1?I8bL4#y9E>9vui9mUAJKvxM2Wa}@G3B? zr}YfvtNjAiLU@#p{nVdk)lG z?m2L|=fLHj1DAUa{Lk5Q0QTXJJqOg(u66kyZ8X33W{!;Gb$_Jn1YecJ7}P^1lakrx z(Vc`$pPxh#orw~EBVhs#86Fj`U;vtqfRo+`tBs2NN^0NdJ`P9z1>IMsd-a=B6IPof zuhQopn$zdwc`@Qym7JX&jrw}e<{h-WKD$}v>!_uK*)!J$<)jU^xKCkHAk@JbRX>P}AUh(x|ZMweCpX z^ueZ=ztV31Rn`2FK-dtO_vvOc^0o&yPr1pF$ebnxoHhI?Ls%^IwzuHAw%M?K@!JOD z1(|#CSaTygYs@v^t=Yz-1e&W92VYvRAw;4Ia$%IN@_JCo+ZCEW%`2jum`Q$ei-fuu zT<4tRue8}qXzCyyRQ?jbCkQ`U;I8d{tnFUotji6 zTa9WK@3FkP^0K7+rIdlFHD0p4xytNF>%1!U6yo)*oHD$$YL?^GlQ@b{(tfy$_dtu# z!nE18t6OV#Y%FgckeR?t@AB)`M&?@LJYY*GlycQTSlwZ)_rI4Ll&{u%6^aH_tK*}B z)LfM4Jct*?_59ZMmB8D`a9IybC!DHiq@v7|dvM>cSufGe*9jlXH_DMZY zrKzKj3yODja=nf#_a^!_MPR$VE)EW|BYakJuP6oYYH07UEXt~k&ujUGUfz!5zPSYn zj5OrH1g4^b&rSU@e3P{J@SvA9F8r_Cut`!1cc#XvJrbERw%i|><=&T|%%-_M7$IW^#_aJKP z=9k@pP$A7STwzLRI+d4hsD7Rwnh|RCyIgdwyE^Q3o%E>Vl1(?AZ{e(aPGS!UU|z1-z!$DpzbAQz_X!s#W&M}ZBV~rM&w^LNyJ}Zsy3v&HJJx{F zqaKrf`P^mqtnSJ%S)N)Z=YGJzV_7X)(FoQLqCDeC_r}y&Zg3oSAfDRxVHZKw&#ID? z0;`4n1>r&2Hb%8!MM6E0H~c@Y|L6R_cl|#!4Al8T{I9(nkoEsiFo@7dfFs1`CokX; z77iW(SpN?VYybdR#19V(3kPff0IdJVgoOi& zGTB8`{9}!&uWru`afm|p0Dy)Cwhw>@IG)D}*#m%_6$@5a$q>$-0(<*jOvWJF`5pl9 z%9K064geR||L^blS-}5q{Xua|e;y#dzBMAu#D539+Ied4Jw{-+@nTt?Gs@nn?F7!7 z&5Qx!RVs%YPS(Ue^unZ-Lf-#QQ~{p%wq9fHtxebHYcV@e%Sc328YmkJ8?aK*W28PE zRkjX~l}M<6ybpd=@tS_;C6il!7#1FPJ?I?wkUqIkCA7TuL6_RL0mCyDOIz)XcrPNsi1yO zshBB7=VQ?{Ww%c2>zb}FF%LsQk%1ag!dMzwruMJ5tg1)RjYBl!Y}bz+N5ou;#OS8% z4^4PWUL-Q)*Bz_~%oCO4ysH?{m7P5Uv2*9~OjfZr6WT=&6J%I|W99C251>IoEvIkp zM3N0@C5xTv-%5Ff2O>WM4STmfPFz{amsW+NetbIjeB3hwxTD6N1lJO> zofYCjh+@SAKQUC@P@qqHLFIkqbvh%i;!O1<-{c*0St-fn7a>h*W4QciSOqDDX`Oe7 zYd*XI%6&>Ewi$H|y9Ax@54Y*ID!lznOV=y~`?ny1(r{`=s#=X19qs$FTaCd6*De;qB^}+RKXJ1a#xBlDxd=K+a|;&9^uC5b0g` z-uPB(spRJ%<&o^irP=35l0U0^sXdfQSl2&EOPbAx3#^7nPl>mwF(1jpa*R4%n~M|; zxY?zr6=mV6HB1ooF76D}tL&mpRd(ItR^NVQ;wM5$dm>_6o-H<|)4koEl8wAho*603 z65g0)LGn@h2|8W6rs_wU(}rMXDsVJjteH_q=-ceE_EX;YC;95R-N0HBi@R@3%*|q# z4S`W>Rmtw{?Sh>V`T-mLZuuQTs?+K{HwUM((g$b>yl{aDAA)bb71G8Az+k6cPFjt!WN@aZ+Y7sYgNk zH&|?}C*Mw?e<1yIz3P7Vt5cdUOGk7y&q-^g`iJr>rm++7w@=?4#l{2@#cnPd^_*(n z1AS1-bVkr!wKadf+GS-IcH;~LzA0cFZ!h*(P@-p|Z?saEJ_wt>u%cUNoE1$xcVtX{ zx>}4q&V`;0jNPxP`a^%=7(N)(hX%DunMO2finVqJtC?cZm#8&j_`{FauD$14cOvgd z*{69y!qYqM=%azz6uhialaQbc*386~rX}w3xVJsp+&_$yKf$A&z;OHF;=`se@$k*UzvR*xNXycW2dUYm<@Wlkvp|*8GsDNb$;L6)-g!?iKgCmxSg}fd7z#Z!BRd4GAnk-Z)!7gxS)Mj% zT9G80Q_7hkfn2bQwmKZAG#zi2zfHm$8(=~-#0>)#+eq@LBAa@uMsnZ^YQS^6gAa11 z+M>i`FYsfIJWcTB&2ZDTyoGU2hLkDsnHmu&s`A>@^QnY;WZRqOM<2FLSyrI=2W>^i z&0{R{R#S!P#E^9F6zLqi9u_RrRAlV&YN0Wu%*`nb#xk?R<*F0q*+{4~VO=X8q_P_C z&dPgO`_Q{cPl>ANUNwG$kvQ8iu&gcGbg{nCm^jJVrWjajkeJU4?Xo3!OCt}<){XF? z+invc(}Q>hor(|F*73I~k2@>g8!={l=_0VQdP!ERJSaJQJD{%afQd7QTisUpj zx;|Ze`{GWmPoB-QB5#WxwZ!EXH8>YTk;4Wnd6j}jLZ>x@CKY;iX6zfrMBJz^C?C2@ zl|3J@#B?@&MTc#0daJ&>)z+FSt6jl?6!YV#sdc<hQb5o>J+skmXT>X?@`>ZtA!=lZ2J0;+lrFWG8Ixsp9u=8!ZHG1GDt|Ynr6< zNBP5B+8DgnjZ>sVWQfS;6$PgX;W)@Kk}?Dh$LP7pGWxN3c>q+JD5X z5;?h3H-Ez$ntss%vk2Z|VQT1lNE0-zRtrIUMFDJi22zLSN~sYHrma{qacn=eGWBg? zL3VAZr@Zyj%3|o4;ma~R$J+CYdAq3b`&6J{p2b5==)zOwd=Zw()HHb(GotshcRHpg zwIxiAqjX#zU}*CQMT(F*L@q`9qeHJ>2g*x6NejFB_zn- z+A-fgSm%vp&CPy6fX$-gNyi*E!0zH}g{aHH5Nds)JQ^j+6qonLvpeDg4<+ zpXJ%I`(McowXKy*$?OzjK4I5z&x&5kD zMLYX*mP&VK&$~^ujyFsXK&%BqAY^)1Bl(eWv|U+l*VIm48U4w=yK>!Sn_oonIqR4h zBZw?-5oVJO zx;y$=O{<7oREE=D=r4_qi0Rgvw`Q(L#!r0P+Cx*r-zp-Y-7w?e+Z`=dTcOdA{JhuRHW0hqqY$xU zbtIL+)7j9NxT>>uv`TVolJBuPJ|*@2!hDoTgf1N(H7T>OqJSuPJ&L}RYw%2fNbB;b6`t-ru@0CBf3#-msQu@vzw!u(se|jMS!nNjh z>fG{vA0oN5rbN0OE-&LLT2^-{+q_WNx@~{ju)UB3%brt}+cSilqamMm#b{G8%!X4F zB~1O>tl)3I65VB;)nj~GKw|EGEt%fxX_?$1vGd$jDhp}tyS!Uw4c)pDI4 z#B(Mep}zM7zWeD?ZCsYj7ha$ty(~7%xdGp-&&RXhZKZ-oZUUc5_obuvCTj z;u#L27Zb{0^cYYn!8mw)I)Ou9=6I{M;>Eu4#&U$25Z=6EYk}T-0rQO!Zkimd2bN0p z=#GvFbvg#iTwHQnrs{N5g@UV5{*Q-;XLIY5O6%z{QAkrw!>ncp5y7hxuV3O-e+bQco%&Sbpm2o$HUTJQyZ( zv&?hXjx4}yZ7-9NmF+X9Z8P1P?CdnA9x8~5D{m@9qnE@XbssLa-F)j5&R#dJUye&x zc-_{y#scOE0Tkqqf8k{A)BWux^r^rpS#gmBd5VTGE@*?*Z5XOF4~9C)@zYhqf*1Dm zb=w&W#WZ|codM?p*W%cWne}nb^~IXsOe-U)WQs1DX-4I`Ys2vHd3J~gMf$T_7FwIz zHS3HrwjXl%Db#(Bb8MVlYJR)^p9=(2_U>!6USj z=2to>2@O|mUrug!cJknqE?xmK)t6YxtHd4P0-K-NGMo@w5+XXk02c{p5P}sM! zC`?W6dIarJ7=^jRJCeS{81c|%s;{7bS%QI2e{tC}ytU)41n2a@fQmL&T%!4HykQ6S z%nKQJXq9l{BnN`Z%RqNulKrfKLq6$SdL z`&irs+Gy)~wZsfZoKB1h(wj0WQQK}Mb3xh55ZbG1yGaf5?CHr_7hAfIRL8zh#$EQS#%2Kxey?wmxSQ;l3C?Yg z)L3^8J9XgLy0SmxzS&S|Rn%|zP2mLvee0%1mjt#~#Kli?tJ)>-ZeSamMKL}-v?!x< z@Wk}YF)Q5wDdhPCGuNWBwt+w4=Yhf7(A7_ada%s@nCP@2?3Iyh-aDj`se%3RZm z+0pfp_LQ3Yhw^OEYWnjS5l zU3a0F0O&CRnwY-vfDBgk;uzbzJ7N4{Rj%%M9}WrK6-*TOMr12tqzAV0pZT^aKX77F z?kja1TZ$Cp?zX;(ZIEjaTi?LVoU3&u<_ah*pHLBvp$Lm37cqTu`$%3Ys%v__yw4Ae(SVoHRWmWsx?9?wx=#xM!B#u-GTAACJV-vQW?fT@|g z9)E`7{+`wZ-KkoY>NrL?N$D(UV);#;1Ti{HtG6n_ZIiXdV(>i)YZ4Qu4Wpw|jGwzB z&Oi;(`f1wg?)#2%p(Q9=JpDL!y(l%@Av2h z@oUzdlcG_iA*e5~f{h1#U)!iD582(DtJU~K8#(=1!}NsQ!xamB%G-c9MVHpDGwnKc zzj40GN(d#Nq-;4Krm#33v zgyh2Is7Go0R~AlYm0aN-vBoayHXuBix+6d9?QE58?<8u7)IUV`3`T{!Nf#NKsf3xp z{W^){rZG4iW+!^kcOLj`hy7IBzS?Kry~gVw=Szc=bWtBEG!aqEYcX!gZ3)a1FX|MT zfeKF4?l()k)_&c%`6kQ8Gh)?O>ur8Phqz33OBMC#abx5nxt4u0gJ+-vRz@S5&XcUY zlr#h4nWFHQRIf~5&DK?|@^F~twDaLpNjBCLKfuu_Qz_t%yx#Z%C!|4O%g~l}udY`n zaW}A>a|3T?RtfBiWZAU_jU^L*&GN8-?FS?Lec59 zYG<-zblBUZ$z3N?KfucVP}**i6UX(YV737NYdb^t%*oqtfoN*IQvLb@aavvR7u~nIRkO;+mRbTlBFRGV;uSDO53E|k1$NOi!8FNmXL)r z4$bh+xf;c(mtA~u*F1)}y#=sk>1^!N8d4P2$Qlnzp5+tPMf!zd4+VH@xG?jqC@W^Q z(O<3d;=}K*o9ResCn;7rT#fEJkb})6LDG`8pi^&a7YBPu|?OsN( zG%s%18AvUEL<6(lGQO;R>Z6Y21{aidQ zXkSaM<>Z&KnNrdu2xYWel44Gu)OjgX)Y3<*ouH&Bh^C$(Qy9bid>dUPIh4SP&W7Bq zFxf&5V>?3Px`Gl<*O6vT&Vzk;Ft*R&5-FL$8Hm_e#8`>%#da#8I~jwuUk0ax4C^iM zSZNK@)O$7V;p(Tyb`^u!o~n^E_;?k0xrFUo-1$eG&4_n7sX5Z59^6E=DaO*9?uikz z^%PQ>T7nL#N_#H=EJ%TVSeWj$Z+;ZXRmpvAPRQHS-K5^-qxjXLo72&pIle9#{(bA# zjZS4!IH%Vq>T%nqO;=9K89&V0^Otr^yne3HllA#t8FurQibF2V2%nvK#KVz0y(*Z` z87VrO>h^ufuu!DHEtGqWkB=nJZtGUJ<7%Vb~Iigvxd7(;O^ zOlptA+m4f4&KS6WUpExG()}g)?c8>yaid&2Hl08yOf#RWHYvl` zjh%J1%92T1o-Jz;ig&%8KIBp&RpzL7K_djI`Ym`|@ufRSS<{?(S%MX3v3;^osoRX; z!4k-_qHs0Hc!wcU!q(P~acC*WIxsDFVT82{HHjOw6I}QlgV#gk)r;WehR*p#y3NPf z%Y@A(Qwp!IN=WFV*ByW1mr0uPGRI3f93@h>&^I$HKLbs(jyk6=5tC?ZD_5qpXk zUHdswn{vdTYdj$qm{Fn|QSqnFjVgFA%li`Q9);oR6~eC0?9J`<1It=vaBCEmCpCR#yM8W-0EF;^i?RgvFU7Nu$LH*dcI?L00Z@Rp#Idhyjv4;ze4jZ#5pm^MSeb$EZVzd7VaEa@r@~+%w-1;PYhcK48eFvQUpJ>3|O9#~Jf@9KorN z_U5|OOBIR_3sEB2o$vBM<341)e{;&@T#u1af zUy4z>Q^GtSI!4>7m#OzrLFlHkeyUPzfwgd`mpt3#(m0~s8dFKwWA$cwzt8Z^f@rRD zRd@X#e=(^`m-bBX*vPC5whL)`zI^q70X3NG&9wrQek4-6A5w7U+lRgn-{v4 z^eL)3ozI+9_H^0YNiyEyPaltl!&Nuo6KXy;f7mo&Aaw;qZc%EMoN2E&q^>YGr5|qP zvMfb+!`la~!Hw66F~IamV?Nat$ue+`M6cy~h3>a;tkp+qP6$!JFitu{|Hnru{MDQ7 zR&6#5n)WUOGmMO{hS`!S%+$@yaBe+`9N^Sl94t4(OtizwYu#>KHjUQ8;Z%?4kg&6p zhNH5qwNFJJcEc{x=T1P*wQ3`BLSCPmddfMCtomV0(Uq_-=}Dsap*+pWEu)m1_~?Da z;BiY!_}%qjcj6_7y8HTO_Sws+ z8nJkfog;9Wc6p+`+Nb@Anw!M&YM<4MroWxYr;fllt~W6l@>PbP&B&9}o(yIjN*(d% za!DUCka8uQm7zLqHcOKs*?0Y<(O4kBJCZneK*&{`8y*mHWD|Am4cINVV!xW^!CrU1 zDrQAmH{a)B+ztb7tO@al6n6LK9T%9%8!GKopVHbY!bur#;p{4IU}&$>T~}MJI>c)q zRT8+FXW=bbFm;nJeNZm`I3yBSvg+KAQ`;6=J8!Q?A;rT9 z9lWJ(aMC@j{Tp%PhB=se2G8w`ZmUmDoJa}X;)^GsBkhpWVknP9EWHw+roikO@qu`Q zMZqv!`O|3T?Ga?j(<=-HGbarz22Dlbys6$zl^I(0Q#u>RgC^`s)x%aap5pEI7)GBE zxWSyJytB2-H;Pg#pX7VUKIDZ#I&(LQI$of{@A=+X*;E;)rzb;XDCLBNDIwP`SMSF* z)VL`LhXJ8l%!F8OivT*OX?TSEF%df>Ife+TQB5D3#O6l(xClKG`~@mV}+?IpsS(OH2V4^^iwKM=QYf=%!#mczfcZtGHFe0jlac z|JycVrKB*1Q<;-yVK43dz-9Bu&rH{A>x?M{?bbG_uzYUi>D0^=eduLu5#ZGqJg$9b zJ^5jOqfpP^5(-NEeEvUVWEu*jem+3`pL1y;SzFo>W1oGv;QHoHC4DH5RG>rmDI&gB zkcE2u`!=lF+BFqxiYFvO$E5nr@>uYr0Q)dWlJM=iSTr9sgH z%K}RfP)C`=IdtRZ*IxWK^mpQZMK?n#>t4z9U@(BYTimeT%DBH73;3dj{2ql)JR>8w zOVPf7lPdue*h7b?6S}A7ijMBXkQin3A)muEHL5|XwNGTpsQWaE#!2D)5r@gLPE_7S zC9d4vlZpn5V(eF^Khai&L$66J9fn5TIRmwZK3gcZOrqp9s*CPR!riAN|1!#O$5+-K zPcS^L_)CycSSD(J_mab0$Dy1(m{J(Gx7di)saoCSNd{|r;FwS9`(3d+>WiuGLv6Vu zO)|UM5}%tI5xsOoagJ;3f#Ne^?GUmUT-t(a3~+T-Ov`r}4eG*Ic)hI4FV`s5$r*|9 zk*QQVk-J`@v~@y?gc)&8om`uo>4nl-)g3=kXIw($HDIOOU72MA)T!lDv7**ZCblx; zyEXpQYLQpB;GeiEChlxesXcgA>a^cGzy|!b9#}=k ztIjB`fYnexw{zvjmT#)EYM0(A6 zoU%lDUCXD41!tgIl>KF*+7!pehxb~Pi155;A5!{DeZj)y?3n7&Z%XM@3`lxLWxGE? zJ6>xe$Y9zS!yR>_;4a^iz@0T(3lFRAt+E-F5q_O{u%@DPOm|mhO^P|AitQRXA=V-^G0H_dTg#9RlV~~+djiO z|5Bvf$D}Z?515r4JM9*lY9g{#j_Wtq#hhqfRgpH)!`BU_X?uA;6<8|YR9`XGQk9~X z=zqAM&-0y zp9Pm^s|I_9hF?3y?`Go}m)J$obsip_$+D*q?T|b|KMYqDjcY%ieE!a`x-O`KO#-dG zLXCNu6WOB@7MKfjkY*)4KlFyn&`j-?!sg1gpyK(&?w9Obvx+sPd=cDl6}S(q(lfee z3$+r9`SlmY;huA9!+yj(ZCu9+9Ad{8SAbRut*Gm`ZTT6YkO^mOGq=V@CxL&KBD^x7 zm1oyiq>R;-bIpa$1%tT&U*JX|)K5dP{H z3$7_O9jTt;8gPf<7Wr}9v}bBU;%g$f8lK2OKI=ta#PyP7y>}J#K?&MTJr!2nrjM9v zKeaYQcEN?0Q+D4zcnnp_ydZ0D2Q#|Y+*I}|zPrzwDPd5DHu`0>rAK*&x#a7UhOpt& zy{7*4lmp}5q%}`Z#lahg%>2hFl=nS7=}T%fD4}Ig%?D~C9`57ib0AkwSz>kiSy|as z#1F-3ss|^2@pRKu(EOqqaC3(LV3aaUTf#)>-lfYzE>1Vm-6H@A&^wlUroc+^! zu6mR)Q{^?M9Gv}5QOLV8yw3CBXEjGfrD!j=tl2D$pY~>3mL}plRQxRCj)y?=~ zI9nba5gQ7GX$d-VxYi`DSkJe-pMS>wW$G!M?4;~* zZQnbaT7sr}c1i#Df**&c3RQ#EZ*?}>`kc6*G*5+&;?~O7edLWD7!|Ng7F6PU>Rz}u zV?u1Tpr_;L$jzkE+2oTW@JKoH`OKZ-+2KU9EUlM>R8O`_44^sJ`0z&U$6Tsw7U+*0 zZ|Y1Hh6&cQcMHrN`Pz4}SESF%ce;9p-$eXaf!%nx>2B&MjfA^vFu%WxO`$z zP5Lny{ zx;QRsF|9B{J}*o!Ud!~noA1qD6NmA|5Dbo!1NSVyR5uE{Lz~HK1*A<~-j2+ZS%ohM z_deX>nAfRm$|J6-fuG##SKWe^PN3N+E%uj*QBAe}kjia6gdsE5Kn9)r79j!3a>y*V9UTszvKj{}~8bWqU*=q0?GoNKY0e9ig`(@g;HphWdxMA1Ed8eFmN@ zNq7>Zg{~IbOs45D*ZUw*-@cK&m&w2<^C;Mp!Jayy*p9O=Rxk%k>>6WVD@!AYvwGE$ z^TbE;Q@YL!BOcdBo;nBGs#vpNzRZX#5umK5z|%~O$*Z~(o75gQg7gOL!&+O>Q<`D5 zEAcH`L7Sa~n2sUA8w@%Uj;o}4Q7Jsp``oz}C{nD(dNtZ!oQrn4VGd!fkqO(!I`2H! zx$Jc9(*$iXcXU0N`6uogRYoL#=$L!9cP!V0oK!E9BC-~Qx^`cP1hg-x?LE1!-7@(G zK}=Sst10!>v1 zFI8~69sASHLE7$caPRGmCD*i>t?R&+2@4sInrO9SW1njwW<1H8`!vSqIW;oQ^HPm1 zRi}qHS8Ch+=$OjjO~p?0DT5*E=TmFr=iC!JW1&GOW0vy$>H}*1?r-3~fdydN);%m`Ps<^KmWU&O+-tPd9mVC(;#4eMY%sPHZ zZ97$6tNEp6J*rHhi!svq3n%@{QGVzsDzg*AI#FycjW4yC=<>oT|Hch5^781k|-X{Vlxo|R?>DFC7-O> z$;Hj%?q0J!16A)c^(dwFVdY?D=87Kasq}oCSOQEhf%^31CXCSCZgjtn#Lh|S{q_?5 zYTSWqG*R;~hnbzzQe)4CUDX^+HqR!nA>~JBba_ZI+o9*`NMB%Ir5rxwHFEbL2ZvZ zJscJOveRaCuzUQaPTk9C@K#k#AH(`#kH*j$sGZ?ia8<46Lz~U|*VLbQn`@0-J$<-J zmQQ8E&7%nYch=ppkn9s{>Z-0=@moKBE!p_KJu$Jk|C4dqL)*rZsW@BQaBnwffe%wh zByVT(J7q@Ryg~kSea~Uh#O=vK-FWVeYqi1i?>t&*QhQ3UqQm4QR&h?5#9!rCO)AgH z?wFk%+-CJD>B30^6VYeA7JU4?#f`L9#gtWjGrq;Wyc|9#C2x%;M$_X#mu&}?BGfY* zUKRakwRRxvt(tUd7oiH155quh8&&tC7cO=GJGR6c(RN!w&r6SBdT8+?uK< zlcnm0jDwsmGNF-fZ*f!WiwA1E@(!#XJ63LNd5>nEbgX;2n_hRFGTcdwn6a}WvN?KT z>5Hw$=;ED_Y#EeK^IDqR(b>h>|SAG^4!Af#az}zZ|c-xS6 zYhhwULCk!4dg%x8CT|LP+j9^jy+bEV-j|$)EFDJ4z!PAujkAx zac-M-k(>yb3HR9_w71LH;&a`rrLzd6jqPu0XhCu`8Ji-tW4l%~KE;hM7MxW6e0|!8 zJ{OUKNr-{Km4JD~^1!NKiqEM;j*k9DV_Tp`nC3xc|Nhn&lx?5560ho&qa1qQi9zER zS4Hh5u=YAL@TxPzkRKC!RK*IoEWR~=TXE;t>CNa+rG6_HX2yEO6TmEX79&>#tCS<$ zbqkh=-#w@4c$rZ+hiQmW<7Znflh%T9AH`kFPt(`9zgt$xqZ`5HfsF z(>kFued0)$ei|e;yfPdkyoS|CCI}0o8Tl47v3RNfRJXak)OJgnS77|3<_%v#Z@I`C zG~sV!v|opezFv6(5(GTLFaw(? z*vWkh2IH#+mew+|B9T)9D@p5r4GHUeM@ia-#LUD_-v;b*&L7VAE1A;y6TGjLlC+A6 ziNg64!hc_sE+xA};1YpL1TGP{MBoyEO9U_|ZtvKxp%*Rj6U8%BU2m^C%f8rYPhn6Ud>+ zoXA&^zaUK^H6z6#=^!y69U=B3K1MV_ypFhzP>NuKa0B5Zd^x-mJTLqyTnpSiIC8iZ z*dkbKSZ3HQm;x9u3>C~f=tt0+&?L~KP?1mqP-~#<3!ox`P(dI+gul8W;8Z{sATa1I zaGHV~K#m{<;A-;iUK|7xLgxKSe-p$6A_rlD(10ZR{>lYb5umaI=$t{uAg2pl$Uve1 zHz$xG5Q{b7qYLmv`o>cN#P`oUVSbk6$NjJT6ajvS-}s4uxIx7KBqOvK$OcHIH6W)u zAd%?>DIGx&J_z6V@PTfCDF2BMln9VYM<7LZ0KdOu2H^w$&wPL`fo}%^Fa^Z#`@`9( zf`f^vgCn!JgDKeD!ifop9dbg@HvfwD4@!J7kQ)%cDaiIbr%V9Z9RPHV0heGPcDQe` zbAuRw^D7U#UwK?3xDdO}dGutWrcQ=nYezk1QLv-2owKbI_n+jr`ez0JT^Y}1fJA-cPqY}nRpfJ8DbYVFGP(*-Em)ry#qZUR9iY@?7i7^92Rk@A zLEzIPyG}*{oY%>8WDUPLseovJ^B7SA;Y+~YI>gf2#BqLt^ zN4);hVU9mxhHx?VZ#w*4d@0dC#t#3F1waH+6*;*7u>inbl>MjT^CQ3hC_C(LWrvi% zuNn47*36>@jmIyB%tanB7pvKCCGY&_H!asiTIh>)#`k*a zLYw_dopF%?)WtU9-!MEN^gyBd4#2-u`-|a!vWb7qykFG*BHaZA_(kn6hJ^Z6{eCIt zkkG)0*EjhuDEc>51`5d^e1SspJ71uXKsW>X|2toRGcw={d24Y3sR4li1vEUjfXxAg zf!MwfYyMZs)d3X(eN!P}5GRQGTTutzULf2c_Vib7@YlXZ4LAUswV#Rr29LR&1K8A& zS=7|g*a3Xk323i5f2t15f8_vou@3)X@UKwmT;|59WX=eu{U!KMyUqQ97r7s;V6rvESUzbxlp+As(;9FTEe@rV9hZc+pJ z^*zUc%K0M2ztU1jXh2K9Ys)WHIm8!Im4DNv-}s*WCEEoJ2ecGI3sIBb(LzBX!^x@( z%R>AKK!q4o7{lm+z*~PNnlc(RS_P^)>J`*rWP0RLBt@jph_;B=5W5kq5vUN-;U(b@ z;PT;Qf3&s`7MI5*0+$F}BJlqt0>3uq%)d16Qb4yN8R!=9uk%xv<*!DO9_V*;KP+lT z!2ie7zt8g`&EMa3m_fg~{owtB783jK!u_r}WCmSybqD?6_;;*+7ghw|;0&~DwEqGz za=>2=u))DV8wcV1wPR5aL=U(t0UQj^?Q@8)I|$-R3t|PjhIN4a00Tyt@n06a9*7R; zMr8%D04E&~?&}>b5T5oY%pn;3{2poo@cC-m(E)iY1#lz-$pbu{&VQYO-Xd#&8{IG3 z0O4{Gg&*kr*Xzf{-1us&{{NSs%>PI8^CIg1x%u$lLt|9{oresMSf9UUK!!*l8hg?0 zhqnD4kKcv;d#H;pKluHxYwxe|LF5$yN)Y6&+7Kw8PC$7wJRiCs16>D76$S85`|TI< z{7>|d!4pW?cmEqb00T|5}dzisIMW2-+mpA zZB5Bk>}KUrfX*%y$n0>)RB;f9AL!5m{vpA|AkV-7x&KZM`PG0p0>`iJz?jAPfeeZ7 z>wyHs4*e}kWYD<>6fkWa3iQJR3aC`hJ)l95^M?mCAj`Q23^1)7<|hxB?;fxq$oYc; z78r^?r+@>}0{4>#9Ejwr2Rx8a_@6xBzk476)8Y|+@<0ILe5F7HrpY7ztu77#_TO6+^mD#HS~FxIl*M^?QvfY-px$=_1pq4r;6PAkXLrxe zKxb#7=U3D7tHt?M9U4#@VMw+EO^)Ar_CsiZ%sx8}PpI&S`AVukLUFjVM3@c?yNlo~H*M zLi5*AeRei{9vb@m3W5h{AVuKp4E4+pLULY?AcX|dn+FBa@hZp-ptQj8L+6192v3M3 zETA300r7(rg7bp#8$Sqxb0)v>gTw{-|B2^08wgJb_wyKjp@RonItL)%erUlzY1;4g z0pbdI*Rla}9%9|d02<^D%+>i>lfEVpBG~0|iNGZSmk3-UaEZVr0+$F}B5;YoB?AA| z2tYwWp?{YF0n~`$g29Thfu4tMgiidI`*;7#-%A885x7L)5`jwuE)lpy;1YpL1TGP{ zMBoyE{}&J-`_D)uutxAde*CrG=|95i>yX=jgabf(J{tEQWQb9WPK54-HiXK88iKNptc9F`goSc<@c5C=a6cM~oR76H~9W(k@F z`aTpq6!_nd5d~PKBCaefF9ZBI7}{Ey+PVO%S`BSY&Q29golG6bzPX;A${9LXnL2@O z&B^2pZ4J#$9nMZ~n>tv7ZGk|F)`m_VWE|{3sAF4W3sc*(Qyvx`7S6L%2~!6fV9D~? zDGSd{CKeuUZgy6d9}gUytoMNVQRX0hU|NC(FdK{ym_LRO49!CWlNz2OoC~KQE297i zXJ>6iW@l_cX0}KsdHY-%upybOp@XBN9T1y>D4+jSs7dLR{YH9)zj)m(cClfowjf{=e3}gnxtpJP`ivhEMZ~QC)%r^<7B+exO z*71;;+c`s0WMb-gE(8FGDVegNt?}yFsj#CX7+BA1>qPedvG*o`O%+|=c)CE^(iY05 z2uRplpruKgHm!8u(llwBq@@H(C27(&O_R{3DNvUn0xHTXpdc>DzADHfAfi5kf-A_P zYzm?Xi2L@q!1p_IbJG-fzW4pV&+{(-_e9Br!ppoFJxe|AUmr z1RnTv>k)TXjja!I@ML12_M9rx>$6b}{Sy@!O?cMbC@ONG6BCG_>N+ckaEbH@*$LOL zq<)nGC`#MiESv(-gJw9#&DK!;{G;VE;I zvBB&FSxv~uZF09VMtjGekH^=q>D)$k|aJ+ z3cltv8C$JrW~`VaG(J@>OSxBYFAH28i)pfN-m&+movkGxnngul6v+=Yz8gu%5^#%mTG#84D~u3*k_@IlI=#E zR3<8>-Ym2@n`$wlR8EJP3RR4eijoT|%F$wCM~aspiIP;zjkaT{G)3BqfkwPh<0l_f zweg3WmU-oBO$mmPTVzM&77<1|p6$ARO=)z{j8I|txgEH*cVZ@|j1V=sY4p29xmHIb z?dM<-X__HNFpo;;2>+9k+D(L{#DwIO1i2i)IL95NCdgB#BHpCND>5_)1|Nn;r2NNJ zo-R8#541HINfenH+|A%pgVlzI@z6QMtQLy{H*dz{XeRG=8KP{n-Ri*fZ8A1H(T)mZ zgUix1$x;ge0Y_C>9B$3a=m~UXyv=UF^7J$Zq z?I_IEu+fFSbU7QWW)Nl;DVz;vbQ;)@-(YPunk>zAqMRn@Bwy$1EEDnAJs53lwzhz^ zkiIrcgJp`S(1;B`9ImJcu|$MRER!rvQ$+r~E*2%L%5Lm+iA0WR)7I;$;?&e-g2yl~ zCL?&r387pFx`atxcG#r51COQjCZ-gm)ts#=fdp`MofkZeEG(s!swpZjLuFFNm3an!DVTpnB>SLYjZ2s zHMRsMCdoiiO0q0TW)hh2EQ11aHwOW13D_yZCw-Z~$jvXIX_|}v0Vk?ya|krP0aCQO z+0yE^WA-xvPrIRjGDgfTmQ+1vQ4^#zrW7QI1I!Yorlx`=>PwTYxH2!HAc3S?q6D<6 zEtH2&lrae$FO`xcL2P7b(5S;&2{|HyK$-%7_sX^gQdxdK>;c4264Ph%+HmGWFgD7V+_5z8|b2c;>o1h$#nuHs)&0>|+QSEHN2)orn zE0K!IT*gVXY&b+Y4J~GLFJ*8!Iam^KEGZDl)mU3|*@yt^k`t4-E>A))`yWeFl4RU0 zZpMmRi>Xp5kosovb*56~XiBn6iEf9;IC0`o@WP1ailKXmR2GvJL(?}+#F93#o#S*v zoHn6lXrjx)sV-t^Vj_eyuezj)6C_CqNwS0_ta@z+;ui3ccu1>Bj$i~jw;Rt%FGZ>% zNbH;+Aq+7)_+i*&p^=CY$?n;F)q#*#J0_NoK4>Y~O-85;&`?Of^V3k6fVn|Kkw`>L z=J_-hF(%hk47>>f1H$8U0wu(XR4}MLZ7NL(ajSvWxdze1ubQyhHH&Jnxe+z|lKE1T zwGm4jcIU7d-IE!qH!8{!Xn+$NjNou_!zB|nK#zsSWr89InUtK;ZrQ_vmki}kmLSE- z({>=4Eue+Z#-0lpgGEIu=ywC5+2wj7)aZsvuD4ijSoNUAIE;`-PSDLw;hUz36WimU zi%BlZ7&{$~I*Zi~66Mmwb_-v!1Ph-$DH;8o$fZ*yNizklh*Gs+X|6(N=RryiXis6j zu8=5%lHTBUm|Y^5!)U_G)+dtGZo=XVDS`RTo&5(3Go5y~xLPhis)$4wdn$K>7aGkiTUdkm0>Danyy09wm;#UFKXCE z*c%KY8VfM3b~mjmQsmvZs-#LK&7g-@xs-xbfuyZxnJCOI$u85;ZH=O`CU-rAgHx1` zjef9Ul#v$xDWW<{1Et!R@e!8YVm3lWu!tI<@yNPG@VNzD;c>6L{1 zQV2P?MDVEKK0M;#z>g7f=Po=Lk6hk zNxWNkv<5R7QTY69!N`O)jAc(ENrX&pQxc_#@rj8kNm9}zVUf@QX%r7)UA8jOW5Ak6 zV)0HNc|k!B`|SVQ1g6e^i|!h2jQSulDROD2A0rAQCWY?`>lW4^Jlj#+aejwSLPvx? z81jAaz+ijOoBw{>|3A4T+0Kxi`4FC%0TvfjB2g(bmo2c8-Oz5Dxs^jy0a@B+#P|#< zc`B)JMhw?#H*_i;EsdpE=1DixKw4voNs)-b>TFj)peS)>B9orJU0qS72AnddI6 z-O`LBWP*69j1&O>)}*2}QgJ*W7KR3JM=26n@>XmhxfpYD283@T^r?8C3hnKK{4zbY z#?lNmPv7jEC@K-@q0N(3iF=9+PLPW(@pgbb1xyDjq;F1$iqN~U{E8sv^+pH7tg1=T z&c$6YN|MB4tY+LONfLV{ge+AmZ^0C-!I&URm#m#(Z4@!Frpi~S8AWw~d>k&O+`(*M zwt>##z!(7-;BqnS>DDqrZL9_Q;2=X1Brq_o#@*B`GA5`KL|9i7WfHKjO;#iWC6gq{ zQsv+sP%3sHPf6m|eh&N5v6Zz=RN=Po6(k&TEu==Hmkmx= zofS(Oloq?Y320dx>3$%P7}%LeV`QTM!w?9X(~X6f)0;<23q+D)NZp(DX0NH_)1%2) z^4FUy0Y;``+4W*V+-%EMXJfrk8AW!Z6#`3S9-8g4f>*#{ELb}Lr$HBiP~(PzPmYNh z^pV}*0%PM<7{tKMa1~&{2B(|sQ(&V00AR8>AtfaN--I2t9f+q3CIOW(L8qt3=hMJf zUK(&piz+);qhs_{LsrdhzLr5>aDbV&9<2n^7y*tjq(;;*G#_$z zA_yE!m@sMl=$90EJ7T4Y2{M2(NsL(Ufh<9cK|tg>A#&@W`jal$URy2JE=3{Z1kM~^@~zPO<0=93m{1aNG?ml%x5W>`O;aC z-`w^ICUh;SgG0UZ#KYzZQ3)u-OJ%NeiW76A$UYHEH!qU7$*lsC<=4wMnj^H|A>;ue z*yLeoHAY3q#K{oCRuX4W2J#zftqzS>6Oc=MGTx^NBtvxiYXTB!O7io91%heN23i;@ zt;DLzLn54XQeZL72KD%-EBdG;KHFpjqtK7uB~<|w_8i6>*3?^1B7Rkcwdq?`z1QlU zZWAN~*fCHZFZHfgxn%kL2+$iM;T%wUT2(oG$A4Azu3BO#nbthSBTh|{ZxgH*JSmth zcnA=R6L7(eI)VbaIivzC5~w305CT<<({D*>;egj$DF+0v!x%3$UUYKCwGM^`v>hP4 zg!z%Nj3o+sY*IWX7@LV4%r4XzoUp&DpcrU@nT_DD&ko}RM4_f!N0gD13Lu3FvcC?xH$&I69pAk^WqRNqP{5J(Gg>LM@&&J!B& z_KC2_U0#n$5_&K`g&aXQ!Lt~K5|7uU9uF*qOxAdxIm45dr_mE>WDn*-oRh71bs{uv z(okHN(6NLeW7p~_q_l8z%O_`n^ymmv#aJYuQEzF%a)c|P+9jg*e7-1dngHg(FQ?tz z4etv1SF*q?pVGvHeqpvMA3A>_oOLjoF}52-aNjgH{pfJoq2K14-RMQ&o<=N*W}204 z8iYVO!zbksy+yzg1QsQXp6i1cI})+_fZ?2&k1}noDHl_VYWE zErQgUf~i6T8@&swzlBYnW%N0N2cgXA6DBg}W2w;ze1L>bQ}aL6MMk5IYLZW)94o1H zFp)@SYC_{UXc^oq0?V<`CW^)Ju&U$|21of0#GHlADNK5XqTJwH26;L!c@`0D3ucyb zzBLF+Qb+aGb#`krmhD^gy$q-xIkj}oDHuZkH#e44k{|&zih&9@miHiW8WzzypZ%W= z4aqk=g+W23KKuW6L22jB(SJqNM!go_eH`fiDkSE43oij_h5vP(?^S+B7q!^pY~v#K6`Y2 zHr=|#5^s!ea5j4dF-U`80q9_aK?{)n9}YD!Oi8`FriQFZl>>@Jj??P0&^{LcV5KP% zj5N;dktFiUT4HL-Jy6wb&?Z=z%gSv4#kfIAdp%)79za(Z|Pg8}WNTe}cJer5Hnn7ROiQCIuWT1sB`7_2j83aN8zH#7S;8 z32B?Mav&^ZQ}La+kF60Ph_ojV#MXjrGZrpFSZHiP5keoSpu#eJ#AlVZ5C5QLHP<;2 z(%J+S466ebrhD2Rt_kJ0Z4%3nWaBB_$Bn`4GV+z`jBvqQ-~+JH z>gkvQi<&cHFuW<01Mq_v7`&0SH(Cl3xi|&R=mwzSqP!+d;OqvIo3L>Fm7rfSjZ@g{ z;n9mW3@8;NRF>#H2EviJTtN86y%-mb7^-@>S=!qNSTk}F8KPsVm8h2KnqVm065wy4 zyV-gPD3x!7-bg9)gkuz|tN@Pz#ygutKrkS2{vDoEiPYb7${i&?4mfQRz!u{57$`Zz zd@41^Yi)T^E|4MiFP=a(Qcp=77eiIXD8AJsFEetkK8%S^F%CdpE`m8GAuI>;DG@$D zHof@3E(l0WCYe|+r@hUpp)>38qk!H#K+uENU)W^Qmgnb}fEKp}Ye=pWxL6&=lLZ9q zYK84r%i?Y*@`o3Y+%y7_dHIY;@}FG=ZKwzWn9ctjSgg@75Ssf5r7aY=;>uGXOfiaib{$wZJ@MN zTU?0yav1@Wh(?3OB&)oKOihJ`3odgK;Kt#ZkCP+^@ar=Ej^a=aWmtrKs$q%@`agm2 z{;FXzuxn}3LpLacQoI4cs|>QYy{QFeSJKCQbyUHz*K= z7OSg)WV#r_2gFYR4d zl6Z33lNbUJl!W*&94!~nye5!>d_)>REbX1rrNAciARd|*yr>f|k;Jw(UjosXJyxj9 z5H2K{d||XBcGJ~BuRoaDM2Dhppd6_87V2# zv5uR(GhGD{Il>2=b5aM95k-(Xh_S-D0p=E8aFPFyg0B=72Ph;Aq_hV8$@!PPI*=OU zfik>4XenXK#lKMKge);dii0+w95{1)Vsa9^Y7j;+uy6!`0V@&t7I-0~X0FQii;qT? zSAk)uX)uc_;IlC^FFAAfFl`L5J}3hS2^13Sy!AAZz?(-rW(pf2QQ2f?Q&dVei>*sd zWnK|(wMk7(@nYpNLiJ;P#}c_bk+7&Hwp5y!BRbJHX}Ec<$<5D($kbF{B0o%abHh2r z(!dx}HN#;FkQ~8(pci%$Y7?*`L0+|xiUWgIk7TH#VN_HScB|L6($)~2#0!mVX4m7k>gZN(I%w? zy<_>oY*kvIegh(LIjlJI4~W6oB(oF{DF7gf>_Icgl5V<0*1Xn@2$X8fL$OjM&IP-C z&Jmf|8&rhIZ5pWl$1wG0KqVrQD`8n=zzE}QX>OpxHKGTY0&tc*BY6lyoI+I-8cue! zH>2J7)PYDc&?eT!17dfHWCTLwG`T0k1wVo=ZWiv- z?ifLrXXaK(`8wYAi%ng|oqBvx-DxjrGP>=yYREQ(UbU z8&qa;+P7NZ*_~vqhRx|!qudP%q5@dMSZ0l)WT@{I@Tj*U$ds(Nc&6wfa)POcv6AFC zQ8JdL6qeoYkOONdZnKPe`6ND(&#jylMJhE`P8jKStV+d3!s8KP)(kKZkuJ?J8KJl_ zl1ARrrYp9%Y;G6A^4$Q#Nil42SsgZrT*Tgzm#e_);D}63jF&*<%b~jPr@v`5fO4R1#fU#9-a)~v^>CcSP5eNk7fSRM`gEgC{@7QRRlt5#c|XU ziot=a%!VW#oxl(%`{WDdl_uY6!} z)uurQrNGh&SlYSRC|(!gEaHl6T^SG$45DTLOCmTxZ8kTkvf{rJ!6slIaCoeGx5N^F z*t0H{f>j!K11?MjUf-^J<$&*#q{$Q%p6W|eD5=RCm#ad=*6n%T z8vcMnBL-XtazyGs$#&zJb)%h|4O4`|WD(?oI9Z0k=$jG$hmb8OODT!4XZ?*0fJcNV zNRtWYVh8YtNaPRsDRDZG7CsnJ&8sv!D#oI}M0WQ&@~<9@XbyQx~4eVgVQsWG#47 z5)n-$#@aTnwHY}8Dnxlk42xS|Yykucd*xevmfIZFa_WSmKHdP876~D+dX#&BnWUIhG3hlfze12E)qBvK|lW(9uDOz1Pd9?(S!z6 zW06VnnL(UYQ3e~boVoo7a1ynT2O#$*B48Y~_$HSkb6R+pKrWy-yR{j zPiU#Et)dd^WD*{21p2s!KwzZ>LZFFEON3VO;hqwR1E32uZ}`9oScg2Fz9=AwZ3#W^ z*#H!P);JwdfI+_1gj?hE<)u29uW&duUA6n@yRS~&d-)5kOEKt&@;#qShZx{w$BnTK|Fwqh5QjX zL;o){!-8LhyYOF|RRI`W(Z;P2IKlF1&A^&Kb6Brf1m{k=gsyC{}NhJM8fp;IM!NF%@pn{}N!AglG_&0r;Ip2}3?P*b<8hztS+2 zG9^JKV^7c!sf1(l8Ir_#h*5C>B%sI4#^AYD$qg%xzDTVhEssztm&k;B5mc_6!q7^3 z9G_Wz*%j4U$wJ?TX%o z4uV+ap@N_+FLhza?}FR1t57cR@#la?sZ>{JO+m;@@8VHbsho9AtrdTilZhOYy25N# zmUG7)JxXhZ(-w3GPG&`TR7$H_TV*yWsc=RJ9oIPxHp2w1-ORGOdsJF$xpD$K$`sI1 zm4Uk%JK&O09+lZ(C zS`BuN{XIOD25V&%n8k<;_f(oyT2qCx(G(QipU4&@N@}gFY_O+FYp9uQ zU<}R-@l+YWU3TZ5NZV9q?hYvCJIL(hLC0&%To2-swu1=&gUjJZ5K=ll4%vrv^RE4fwFObXJh31`%|8r)TtRcbFCG zv1-f94Q8Qsf}zU5Ix#Z_d4>tBrmRS$ZCVTic8|^;D~e)VjZ>Pm1}is%!)}q8iR*4E znc3B2Q&vspr)g#c4oyNeh_;(mJVU5^iSrrZ>?}CrdkbiXktGwQ~itT2yFtF+s>5uDWpM~xT-+z<}+*zC$it(6Vi%pN$hDlxvjvL(GE zG9VK$tL%&=Q69V5YA|v11>pd+IXOv{(b;3SDP1n54IE@6F5J_I=9rzRo{lrRc#yIw zX#{doCE5ewP^A>IZ&oA*Iab?brHfIQh1Y%uJ^>B{I1u1KfCB*z1UL}jz<)OfLW8#Y z{Qo!8LUuRIZ~9CX2t?lhT!PLq3!Rmqb6NPCia!zlp#I<_e(CaHGWC(0g+q3P49di* zptj0b7L{a|QT1W0Iz|B1L`9L!ong12l2dU4bk4my)XY3{bHWGE}k5y)T+cK*Nm z3nstbs@2$pw4sgGS_yTXv-|`w{gpzy)j19dELjjRK(rdA28MQv5auYQsCh7=V7{15 zFbF1?tuVxeb|pawFgHlszv;sauVCN^W~WIbv{z__z!!KclF))Gac33MI00w>9Y1N#}nqjAb) zqXvUf8nC=dV=$F-9oX5UF=%0w5FCI%VWqQzIyNiHqX7m2!&Oz~wBO9-E*^~&L8Ljht>Cy^(B1MFjKA0g~Zv>I3phDRSIgH6(Vc=TwM)+Q{65eEQ3<29svQhue- ztgb*U!U|Pe@AJ44Gd{IKSip9r)2ieNh1Jc@R2XoR8t-i~f;h-VYhorH2eG8z?g4~j zPzqH*imEDs^ZAsAK|8Pv#(U{ARc&=HE!fGh`dtY(uLh!~q0(SGxT8O9-= zax={_wOI``N@zFKfB}BQQ+ZY}6a~>@3~pHe7!@Y17efGeRSpP(@+-j?z1ghs4pT-? zN1Qd=0H0wxb1esR*(e&yMp1^)gDwKtAOr-45ymbG^Hdmc0s2y@LJKhSIl7~1W_Yg) z_f$AdL3N=bhSPi(rwPz%obs5oAV1m+M!(_(f zHgG4U+)2PwN@qEyQaSaa8rY`Lg{dP1tcmt=jqidolUsz9!b*rNI~v&5q!<8a6$Crk z7>n&-C^t4T0ChnwP|+HpNod2YWi9N+-L@M+Y)YFG@`)xaWGOq#&Et&jIBPPKSW}Z& z^9m8~$sPooX>FM3Lg1Bc$7 zUD_66ZYBX?kd!q9Rw%8&gE$Bh(3RN=SdyF2kY*6gm1Y~e6JSCU`nTdvo7rh+0t1L1 zx>AW1KuL&{oxrv#y9N^#L)JUaY3Krrh4>M=%vOB+TIm(unH@cluRyCXbSsq@r%GVI ze&gQ@UNSUHXsgkZkTlT9_uhcN6T1TLOWFV#VW{(zfie+9K(UmV_aCq=G}> zqL61$SJKd6z22LR`pjq#pBo(gaM@J7c(x>%t*?O7u1w zr8VdcYOa$3^P!nm2qFwFHIm-t8ZaGBR6w2zx#5QejO)*C9xJULW-RYm-)PZiBoN{T z3Bk!%t)20iH4WeykThkL+3poD+#JR*o$75-PlDdic))QsuQ*^cD)TlEd<0mJges^T z9MA}K+OIc-{L<1kbm*RdJ8d=SZlM(e6>BUS(G{bdgD-p)!lScNLHo8@)@);9suw?;de4KU0@|4~SF(nth&3-M-m zmMeYh2uV{qBlIxor3R!~VQ8D@-htPL@J%3#62qwLg8fPIOSx{ClSCm!K}b1z=8k&a3D0OGW;L-|3xruVZOq)W&g6sC68aS zlqpZZlJqYa?_`JPKUhS+K}c~0DPVxkaKBWHD!TC(r@h5}*Rh0vA`IZ>pGx;3pdgDo zrhkFY{}&Eqbn+z2ljUhl8R^WFk*u!B8kL+!iwqQ#@yDkLjg1nr(f*ijRuuhV*lGEf=0?+}a(^wkyAw7zvgDE|VrQv7wrLm?aXJw2^ zOV0481YSbqW~3#L@}~qgByzKe0ROv(QEowAa+-fx_z;t`azY^NPGD!q%>Cz4CqnR_tYIxo>91xqqehWR2D}H%#jQ^*Gf1{Dakb=)RU3M z-zdhDk>R}(2!JmQTN>#CHjJPuWhe@`%6oXw)f|Ztlw`MuPdF<%ZxlCngq|$ih!ugC zIx8(XhqV+TDp?BtMm>=(;D|x|Mow~88e<(yube!-Oh->n!Kh^JT9m=H9P>JP@~F!h zBcnWdSzZ=ohOsm&4`nkC+~X*Y_TWw|iC~NZj0@HsKmZETyi`UY2|8Jg!JdLqdEN&0 z^c3Xr?CauDBzx0Y(H;eO$yk%o&7(kZ##ZQ~NXr=)V9Y7@mCLS;7pHiim*%Ut=C67v|NBW3)wjYy}w^!kj$6>JYhOQ)Cqg(YbB+ zKv;*(l_!*2C$nmxd#CAz1ru1G061$Lr5C1Ea>ENMrBW`GYig)udWgs6mJ4&LnA)2T zP1HR~n4@>Ga{;Xq9145_90+hAz<~e<0vrf%Ai#lt6$e6tPX8nOABOgg#`=F#&cCX$ z{}0wf{(mm49Oftdes<0i?RDxi{hD*ubDB3|{NbYK{KlLUo=bBscTQLLde+&s%!jVz z@;TS}1eQ-ua`?zu+Upi)Y0d+#W@)dpo28j+djfN9z}_ccHgh?_5+ENn7aC3uX?PV_ zdCm>Z)x&w7x$>OLnRBLlz09mU=SF6p#&phgY-ahlaeiNxhPxM@8P2QAIf*&{Abi7c z12e+NOq05f2&T)H-c^VTxAx7R<*r8#dbSEtwU%F1&NS4Jo7Vsfmqw%|DeN;BF3 z+mM@-^$VUos5JAB7m!C34pCMQIX~g;V`w9BmygoOU_Bz^Fnscx*-r`{wik9cnUiTR*!#rj- zCrfiqvKE%+JY(E56JBQ+%jeu)TpKx07vs6t!^QaHb!4$V%HkYXTt0JAsaRV$&y<=g z!}+5aKY5=M-OKA`;^H+pZxWaG`ifW?&Pl|1rI=U9>pUV45d68UOce75an~YDot!`{ zpY!=Jo_L)+TzTf+naufx0`~X+gX>11$pH=oI1u1KfCB*z1UT@&mjj_eTRQzC|NrzZ zIbr?(tuIm5RC3Y>1qGz;iPx`uzzHY}? z2L1%h;g>;o%b>eu(A_eqstgL$%b@x)sFqCpAv%@5s9YwM%Ot8YiJ(j(C^MYCh^kDY zDwD+~vIppimP{5e+MQBFOD2(#g+GK6(ic^lMGefN`m(5&EUG1o+LlEGWwFRXstPd? zO3o++z`-mc3iW3RJnD-eZIpp0S8eV?;mE8cOmvN&1MF39M3+6LEWpc}C2u?@@oRd5>UO&d!hE6Ft2NSdWN2RcX}} zK?%xWg1r;4=b!O(fB}Sa z0qNl|Az5?ip=L@TV9}d^FPE9jS=8f!Pk;jf4g@$5;6Q)_0S*K>5a2+70|5^FPvt;x zke1gU#D3@m8EEtg6?Dgrj&5v1*^GDa*|D={6L!ZnBR3yM6S1SF6T3fJ z@I$!|!kR-J*RSVZzb?3by_tPm*moZLb_RpCBC2?bpkyljXV>5=zBG4@ot5_15`t@# zRMaYHeuVxrhOh*EUB`$1hmw)Xog*eOMzx(|hsiflePi2PHXZQDCjt||LN*b z!Jf`7oyDEM_T~J?>I_^J;6Q)_0S*K>5a2+70|5>MI1u1KfCB*z1UL}j!2cW$aBkdx zlAeD_z$@=-|EFmA4^|Qs)LB^Iz417~rOrn>@9Dg<^K9S%cXw6*3%H|m2=IVo(XU3Y ziJlidCE65S9Gw*1H@ai=w^1KQy&knb>hY+1qbyM+Q7KWPsPL#CB2PuW8M!HPaik}* zE>atr7CA67GVBUYr~b$z0;6Rojd&&aW3Le#7hy&B4$K5A}S)X zBH|*tM*I}gGyk3rY~i=2tg8!8IC} zm!P7uw$cUDzYAr?CytdLrH`Pjv@~eaxOW9QS zO{I%Ki3YX%ZpoF-2LtkPl`osCJDX+u^(FCJ4~~?8%)++PM4*nfG9Pc(ZdZwp@tdgk zWz#LWZ0b*6Hr1^I6@~cm8xX`n>Vz`<_+=9ZDZ2!je!WAKXmK;@WWNDH&7tgk{FJo6 zC6}Ft6Fy3)ZsIi!Aipt41EQ4GoQt;lN^{xyto#iGmV!X4#*eYo91Uwskw1aN6Ph`B z82o;9(}>leDfz6WzFQKjN^pV(n_u13co*3e5;f{2^8CgLQ9{{; z`19*|;)x1%)0Fb7gqlO+kEpq!63SMg3O@p=ZWSsZs{OKQ*i*IwH}=b>=1>J=F{b>Q zLp-7Ea**gZkonSFlYFe=ZkY`p5?_4TM0YW=XgK)wJe4MXQ2l;_gIJ}&4NGv#8+wP& z_Un0~gyb4k;>ST6g9>Dn;O_=X3X!3~ZT+&TG-XrItJ>%$N{EJXobt=2-l6O~R*kQf zG&HFniMf8gL)itaiXwjwQY8hbmq_&M24WST?MEO{!e{&S4)tXLs8BKX`Y373E&@fq zZ0gGb#&MD=zHF{^Hikoye>O3ehB1-nH|L2}#3ntu%&!}Wz&x~)W`y6Ir!LN8t!yVA zsg*QFZm64hLfL9YOFIHd?r1O<{8&W<(qtv^=tl_=mYve4;m>=))&c`9vC@&{6`UND;&*Lit2ApSXih^yL#H`GlNL+{Gs{`GlHJ zX!t}apBPIC40J^ZpXkgddhrPnpBTa?68J<4pUC19C49m_3CtBmFrVncCkFG0p?qQl zpNQuZiF_iNPvr24LOxN%C&o|$lUvb&PlWS{7(Q`3pSY7x4B``FK9R&HM)8SkK9SES z%K5}-K2bplNHawQpXkIVy7GyBe4;;}kno9gK9S2O3iyPAPbm3>juMb=ijI6Dl23Hw z69f1}ET0(0C!~BLgHPn~iDF7X$|}P6L=>Os&L?{EiQD+Za6X~p6J?ZuSXK!6L=QeO zkWa+%2^pWz3j&`22Lc=ja3H{e00#mb2yh_4fdB{ow{n2?|Nlq!|9{hN|2MyM;D0Og z{|nmHw*NmM0N?)qFzoTtUv4jbSj9>!-tkQE5NvPX{{ITU{r_Rjs_QRih*tW|0@Qy z?fVMh>%v)`GI}LA zxBtH)nY{s=qb;Rv|9^$NZU28oD)*Ldc5NDaH8dz+O>=ia%^ z(iz-~wplupy{Z-wUe|5ub@dq(g6|B7;? z@iKQ-estUZ|B4Fs&S#E4W7tccxqdOw>z%p%{}p5Z3&d3576A?fI1u1KfCB*z1UL}j zK!5}PMH~nYDx(e21uNknrLFlWih=$}Q>0JRpAL&i@BFkRMi3>4AulSoXP*j1@W&UY zqW>t(w)~?4D1z%LAc8)j0=7vY-6)8i25c~9YO_U(WKm%|LfV+I1pjGk#;yn(Ffu!YB};Kvx{lhB zFPO~k?!fh2Z4n64q4Ts2WdvGGDY}1GcF&18rgpf{LTB4Hl(a=7Z2@`Hrz56_1uWk# z5PUq9^$cxY8A01n{=;j8xTc1?=2Y7?m?Zy~Yr=3%EqBeQkFfhtA5+g#EKm?lxos?) z4*w(DTC$6&PO5-aLT#no&`>rzI|>rOnOlt(+SKyq{<-y5m(hY?v?K(7odu!z?tnk; zHjIG4SAYWn4g@$5;6Q)_0S*K>5a2+70|5^FQyd5ia?xwh*eBe#|KA!s=ifK_V?5i> zp9}mCa3H{e00#mb2yh_4fdB^r90+hAz<~e<0v!0y=fKo|#VxY_6_tqo`ARrn?mt=2 zzoe3Xk_LA9XMbMr_s`eE9BTh;HUF_nf`UQ?s?pi1%11VL4uUV0eM;bU`}q22f-cH} zq5?q>Y9>dl;QH5sm^^p2Z3-Or6bMj&tZxL-*=DE7A~3&(oS^Hc1k(kfA@sp_Xva|e z2|I*_b`XYj>?rKmF)Si19G|d=2^oJvutt zm;dihTz^dv6DC+McrGL;Mi3km6cQ73{Y}9-crHVN@L_FaUmc0CkYLKgskVHyBs4gr zLq|LT5gZyC+_7WF&`uQIfWr_$OlXJx;;tRDyJ?M$10=!+<}c6b-eZf-)HF~!ZBUZz z^~2|$eR-kA~K&fMJcxN}YOSB`D> zOM}c4dQ6Rbw(|4htEXSw?f&r&`!k-8hs{^s`P{lOjjh2qUrQ<5wp2KG@jor9n*ofV-fn$!CTl2>Upsb$F~fsgC#dmdsi?a^R7RrB@bzc=gM3-yMBasO(+We|vG_%mph$61H#HJf!!y z*TYx-q^s?{{M3N2zj=Pa>(DYg3)mgvVUVmcZhLW|KRWGOH z{XFzFY3cd}Z;aD7U%oIcc%e?G5G^YS&6DS^sn}3+;)^v)K9J1(YWPX_6SA)^9Gx9; zRJ{1Pq|1vXkIMIq>^;-v`gzgMh1n;+DcdxW>3CQ3?%fL;?G+V~ zPxX!r7Kqyaez&%cY2Q4saq)Kr?t-W&&rjBZ|j7Z!Aiw-?31) zy~l$?N|!G<9(sIVW3NdI2R^v;hjaI*m%M*R`?Oxj{=Slr(>yfU1#r=BZv4t~gH{E$j{!WPe z%&ec^8FSC`Gh4?+t#0n!vfonm>7E_$%o@Jx-i~KS_0jBpG2_K+CE|NtSoHZT=}U^! zdnyl|KK?+c$`mT6z>HfZH=ks0H?)d)H@iN`|;#W^}{lfKekK6jCJ)Qpe-@aL`%|0>XzT#Pb zUd<3bY+vZ;}=(A z3XYv~o12F__sl-_Ta-H?>F2b5+9NApC@TH6a`DP%_79qoe`Bdi}vIizaokJ$YU5_RhY; zOV*6vJ>%{!mnYw;+ExAHx-ox!)MxS^ONPGQchI#n>4uBuWyjl83E(=EG;7PpQ_OczK`69=m$|X2rL=r%bpmcqsMv9olH$=mlYDeAx8o$-l%`25A) zKAT)JU{;L#{5?x$1J^YcDF+qIn|SrnW3iufec_&GFD!ho|E&Duc!LuQN=Cq$f@H2$f^ZXsVj zV*T{H(>mP?rpIiyS(>A7b^UVl-p;o2gZFqm$3I;8{;bbVUS3yn_gv*U`-KlyF3-C5 zSpBAJ$46W0?|V1y@1FZ+e|bi?bf#|GyqpEy2Vb3Qn00!?(5LnqA0KGl*d~uU|7~Gz z@PSL4e;Y14uvz;%nB)9$+~l+I?>#@)v8ry@@z|u{y2BH7A5D{O98|O2EX*st zTwSs6u7(|jHOIEDFaIn5F5{1PZ2hEZ)9w?g<2A}@U+gN;PItXOec>AIhuel%Z8YoS zs^xpiL01bZYa2X>9pa1v6p7Ec3jWJ$-j0V*?4i% zINLWpPcGi{f&86sevSAfu6SL;#pTM-;K|16HCL{^{lct+^4g3w2gkp*VejGJ%PTXY z_Fvw4TSAA<%j>iIJ-o`*b=#FAFP(li^7$_l-Wi*od1t{My4p1gn3irG8P`XYu{UzMZzb(`TU`Q7h2|w@fU~>?W>P_ zXT+)F-+dZOlwK0{$~)Fnqy9e6{@Tg0J2xf|T77iJ+{0s@ z-J1B`D)rv`8p=DKUb}Jl!Xwj@mppUF6Qk0;n;miTDch=&mZl}i-=>V*ZhzqUOJjbR zT9W;MsOZwL(m5W}=}liPIlJQS+T$@tGREs(b&lK=_m?3m`TP^9MMcpAbXP)KS8V^& zes{`+DVhr-UVcGZKDS`vw6+EK?~TSCM_*cyow4@7``s5Te5vD)C6`Lif86?nVV(7h zj?E9Q9hp72dR@rgjQMxw?pm}*v+i=5d|}d`kHsC|@WNBOKN&Z1!3S^d9H%=!bFgan z)UK_6oFA?`a`EWbv8(Q=Ds7&9V&48kPsb1HpO!Q)aliQ3*9YcJ{QbxMOZF{2HhkB; zTNmzF|LAa;de@}Yb(f}GZa!Z+ZQ>Hitd`x*@pEQIywSLC>ZvW0-h2L)^g}x{okod$ zX~jvsF)r)K!UrE7kh?nNge2&|{q_3xn2Mz3% zKm6Fi!*4CH-npRpnYWhb_WX6&u6uXh9jlyv@j+|9Bf1qQeiDDb;{MusSI^o*RL!&c z3%Ue(fA8HC-Z*%8x1x6ol8ZJKl|+8fIBs6tHx-sO<>RN6r;qxpc2MmGSWFJ!0=D&sbGBZs3JEqfs^dHv!)o|(I0&Jt@}@ekJp9T&a0Zm0W=Q`*u;_ikQ2Ye|3e z%0(rPxL1G3TH4t)I(7e2_tzh_X6I&BZ{E0QUH#7A{(S3?tqINHQ5AQuU3=vHBICMO zmJf;s@;}eLn_B##N1@0x8+#3$^YNqid&d8=>G^C+ z^SjgU`zijlb**ofe&GD0-xg=r-$pjhT>8eWQ)gsW=eXwBFO%j(tey0?t71>|ofVpE znY(iS{_^1$GCw{Rzs(br^Ilxq!jtCh&1=tVHm7F{o4CGEICz&~Yo$H0P2C9j?tMQ~ z#O^%1|G=NeKkyW!ooP^)pC0@2@vTc|mc4FOOzfZ@`pV;TUzs*ozHP&SBl^{~2f95p zIDUm?@C>=Ne&wlIX-|zE)co$e=xOt^p1HkX)rz}XuI2AudHlcwg*(@FQm2-_5pnAF zbpuOYIhzqW-M<^IJn`nL`lCZXtbT0OA5Zt* zEOFkWp7}&UKS7W1@b8zc$}GDlV@5^zsAuaxSQxqGqd0%HCFsqVE}_aZ%I+gZ6kXc= zkp8dF#x5-SDg3Qx4z7RUOZSyM_wT>|+=?~z%a@nVTc4)9?b9KidlcL(7hRGbg%gU+<$oKbdG8p#Vt4b}4a%tpYQuKQtldvq z=O0?OVf4&$ixoqD}n%&w>Y{^1Ytxn;izdyWk$vtQL*wnyUPfhD#re9CrGP z%zW+NKkHvVDqQ-`dhO+Xvk&eyT)5}xv7}LN)qUyD-xz(_{Hoou&sK@#M}H{os0`U? zyfVATzW0uvyz-rD+?np>ardQkYV5dfRfoFLr8U`0();Iz9A4IR&vy6DVc*<+`4icJ zQ@0<#F8I_v;?(6h$EMY1SNDp@IrOuz%ct(F_Y3lVE9^S(p~qz}-D~Rg>6M>16dp`1 z96A11_3^)(_EoMsvRqwy`N=77jEd~JFlk!jQM0VL|Eb$vbY~Rp3#qN$x?#+^?N|H0 z@ZBHX?7FnfzK`A~pZMLem9c-Q>fhd#{O2b#;@{HrKmIq{+HqffnYK41Zh__n`Tn7U zstyh;cy5Jtdhoi94}9C}FR^Lu#gj)2%bU8reP>_sl1(d;eq8jyBd4yO`tHlJQ72z6 zimkh%d+fVkE!|%#KYM8HrRJ}vx^9KXLiCX$!Z_bVLpBu81{$kW~p;r&?sT*hSv|?q` z`b}GlZP7{ZKOR@JYMOM`u66H}?;df!@zrZOJY;)-T<%v{w1fdfk@S z!v*z{w=!N?@oYoSeMjG)VW0CmNGy>$Z2+b{UxP z-m7QQ$6Ow|;D=xCo^I`(dhz7WEsl-1Zwu~H{^9)oebUA@r|lZParw1R6bpB~t2CFG z3r;@2>FRRNW?kR;yB5ulmxjIe>)hMBn0vqR`~Lecw4VJSVfmi13r>9?f4cho;vvrk zee-L#{tv(3SiNqBVUOgV+uYArwJteu<&Umf7<{3pl2#S_H zeAFD7YhE>^Q^oG}!)zO#)?exG>~>zVAaBjw(%B7L*H_&8*~`CO9I<%IxR>8olt>;P z^xShlmMopyboM>V^Xqs0ai6qu>3ZGa`o;6#J(W|oa>12ZxAz~Yn`WBuXvy0X)}878 zYj4eaYnQGyo?1F3PCc%E%{uFr&y}YtrgSJ6(`(W_)iL80J=cehmVA;^u)0U0B3K{u z_O;w{{r1CWW+(lW(P8I<50?(>Td8V#?yDV{hjr_Aye={im2aQ3Ci$1eQ(S*PG5S*J z#2okLN@4h$QUSN^@Gk^%R(OeKssnc%yyV% zJy)F4b=KG!K|^&#=EslUoAJ`A-sLMly!_$SUbjQc^-GY?d`iE$SAW5}!nIkq3zz<} zw*182tT)~o(Q{kSn}dc;nfUqbQg_TFXD4+Uz4VSlD^{-CdZ=tclm2qZ$Kr=mzD_+| zw`t+<#%V{^_Y@RAI^|feM?ODOF#ip)SiP|3xot%|x19+|h>f$ZR*sD*?HXZFbSS7) z70ovrf=?b)9ooL`*fWa~a=(h{IJ|LR{gDR?&z2<2s}aAgl%F|~toZup?%FL!&NQqt zU#S|l@ZIxEpHKO8p!v|AC)ZdMcByDWsOI#Hj@xIAS^v~S?~H}5_sSg+-;Q`+r)=sr z`;N=+%vtwFPG5WRu|*~0ZTlLgq>ZtRS!@_$OjnMs|GBVs-HFe3jhpmW%%Q8l^mw($ z?-f5=T(6%P8^3eVt1p&)Jixl(zS9R952vnMIC|-Z{kc1*pN=rB*|~AZvgOS&y?*_8)588iaoxAASv+UZk`0C-_nN|QuUp^g z^j1N5)`Fo&^0MMfKQmnDAef)f`oQ90Zw}q|SInT>dj2}^>?X;v>5nh&tDPU!x2U)B z0YR7GXa0P3z(@7Ep+oyBAA9wX>tXZCrt$ZEa_HpAS+%E!EPwF#-LJkhIPba7e=dqm zf8^3*#my3@#8Hw`|8oE5r@TwHzHXKvkdlap~e%gW~nEwR5Y)7yszF z?6Gf68>{n=^wqw(WX{8fhm_`S-cKPjb-AVgg?fAKj_)VkBper z^4E#WUGB|mRCeApe*UC&4?cC_mx4K8I(Js}`2Cq{4^LmU?$|>;9x+JIJ^TGz^(6y7 z3>oxF_aez1&2yVuvK~CUF0xElmi+rR-QuH9j34%4Zd2Nx1G=uCj~bBm!gt5_q|bcM z{Njc`xBqZ{N!8Z9_K@|hkIhhj&J(_pozKuz}c%)#|07cs7lj`@}eo)QM)%BBd z`@GY7*U#nAx^d%12e~!z%CQH3f9$#UlvgvpF53L=C&_1C9Q(`rpYB|~|CKYcuGUlc zRSn*8P}lXP!~ci9_l|3#>)J+x6a^Fn6_gr!2kE`{-n*ayLJxsJkPb@ky-1bbL3$TO z>4-|NDpdgiL5lP<0e$p-?)UrtIscsV{v2Zxl9|2Ny4JPU?7jA6O%X`q6AgiunIE3b z{-al8;!$YHILB&IpeM8nE)S?FI?_^Qd4*H8{CM&}G<{P;)1u4)u@B~NsJwKNlelW; zbCYLdco&($mQD~aNh6|PM(D3+Ai2V|;cUxo(ksRTd860jK@WT-Re>KKhw{Mp))AXMl-a_+F0 zy=PXIOSe4S6@03o2u9-;siwBXNODoq8A|ZO2oj`Ce@14ez_v1W4;@roif!h^bqL0L z7TI~%k4Aq4$A~{mY*nR2P2)1Hd+@^_X>l)}kSr_Q=y31jO|p(i^U!NkmI@QL#=E!4 zK^^CJRs4?ktQ)kzSzm{sevp909yWsba_0eKK^0@o1Wr(*7faZQWo^W+81iP;*O!9K zR4KlYV7P;L+6MWgE%}tEY;XPgmpk;KF1^wZkgAV8RTOchW+7Cgs{(;n8M^TZFshNr zv8bLvQ+7J3S(wG>D8@DAB_7`EF$y=R1k7)n@TD3*F|!ebu1BANvX7rM@jNbn!M4$( zT5|Ys0=#4UF7FH^Bmggrbt8wL-14DQPoeN~_Zn?eG1$jsLn`M{)vqKJVrxAEVH6Uo z*fkilOqG2MXQy2rlQqeV?Dr;#R2X$Cp_&?HxiLV~{6XaU)fOvqp9=g2bv@@6@2n>G z`%2TtaX0gC1)%dQY!coju*Kn0RGLOkGBIxH(j;j-1Vk?-SF^4miT?W>TZhd8gwI#@uMY$ID z{w-cw|H<1)CDitoHvE=r&mBnfW}mI^VY1ON>cpLN)G`sKyvC>{E{ekOr>dXKhb?Cn z7d1JA1w?P}ky!>(D@xrjMtiD-1){~Dki0q( zZ5na!HE@?cGo6@m3%(7IAiHy~{W{rA;o`%~1+>I^ulp55Jp05x+B~|tS~R151wBio zqs411?hIsDgpln_bqzfo%&22n(OJN9s0bEyI2^Yr8ZVZ$Zw`DMABAxT-(Irq=5tLO z^Zx$CdmTx;bNe`W7KoT3Y!N3IBGj^(l;f3GyTwp-#o8zf?6Z6@A<`W~OCojol3EL)oOdd5^ z@sd>~6@YM-KH*rF#HyMiCHtrTpR|W5ofsZ3~57+PSsI^!OuSWd#kw^kqv+ zx3|L}1+_dr?YL^f7m(8*mt=v=Y7|HTdnlgOkuVe-D)R}ZyIVr2C6!MTF%ZY?N624d z$81wxPa=PPXoG{K<&jP=&(4sRCe`i?Q`T&V#fz6#xyUfrX}kfyV->BCRxo6kUDe1pf>i|w0_GvfKAW;iZ#kRS9~rMykoviv3_Uon;+EeWabQ*ZS8!% zgxTD_YxC{2t9$umU!0>94eb>^YW@FW{y&V5di}foMc^+2e-ZeLz+VLZBJdZ1zX<$A z;4cDy5%`P1Uj+Ul@c#=0*1U^fb5rFczmIv#eiz)(uykT7FHU4NeaWEP@_0B&{?+tG zm)zB}Ne~*EFV?U5KQ>4mKk{1o)fc#@*o{}7Tn1gv0xEv}-Tor*7lFSB{6*j|0{;^N zl0Yp@R5eX7P&X4*Clm}kgMkX4lE5>n5~tO91y9uXHo$&hpys9n@R>dEmosn#7^roL z0O~`+fOpzJWleVA6;*Ha;rUSxXQz@5Kml57h%*=hmXZWpK&=o^DA>jUEbCxpZ{utY zwnV^TU~Lz6unOcM0_tE61xv&2?V(msb}(4m8rantY-x{#I=G+?l0)rb4Td;afaReG z7{r17>{JDUL_oj@s5#We6>4$O4X~@Dv%9%9+#YV_e$j;s(3Y+PunWT3#>E{Bw*>1$ zoULsftX$v@Kf5}Y(%u;kHiyF;?V&E`t(n7-2zdY*{K%rvpR$eSQ+R8>2jyg1SY0da-e1K&g4T%Zol zfROg?U^A#C90C0$3#t)o0E>SE2yr=Y^Pjq@+L&A0SV0_6J#q>Pakfc#-FqR+Wa>+W^2h*g(JlGAeLq zu%v?(0IoBbQB?|P1_nXcL0teP&YR(50yJ0nNl=vOT_ASQ3nN`9?+m6^McTXAut@{Y z0MYEhKQW*_@1I)71_lN6a)4MtVJMOUU7zc&4MBCOfq+{AjIn_`KYr=@pS!d3xrzv=BLa}i!3E+1@b)*~fW4g^QHbz?VQ>c*YiHC~fPip>&Be|@(~bx@ zATJDMC{*j(P>2h_vtNWkVFG-N0tG<+oUrh7A87UH2A{!zgh7=nf@Y_q5J@Xuz~<8f`Mp-iX^BoiSn>vPNt$w17g5aNC>;i>3!VwUJ4G^KuL$?wVc;{k`fFrG}!D?_< zC=7^t=P?J+O$lH(px8NGq_qDan7K6+X5;Jv2yxzs6ktby4}WMRz=QHkluZ9~R0ble z4G>mPA>$W|0MIPqa0?V&AU5Y=>cZ$KzXaO4kOifowGAproeOnA4nSqNxeclmbQ&+~xv z?~}ow(EL+nAY1^Q{u`J-ybFN&KY*O~2)LjtD*mIwgpCEtYk?Slfjb~Q!2VyS1mF~O z9;q(Q2(Swx0sEeZhVxkS+oQl*aHNBU3&hMGh=}Jq{EQva){t`o0>?>TVE!{?qIS}N zn4?Go*0O##w5_(;5}YpYlJt~%pZ;4EP?pa1Cne;W1u{p>FSe-ZeLz+VLZ zBJdZ1zX<&AM}PozQ=Rk8FLqo4_2%i?Ckag8_3TszZsGh87!F!rmPGl zV5;T}3=sLj3aGIsFkyiMGiNOe;G>Hv(%GrLJQtW>MMoE;47AC}&&dSl<>h7L0k*SK z9$u~&s8UnrAP}ln69fd3xT1lQ0t8A0MS&iJyn(!$Es!~bfDD1kOp+iL5FLmFxXaJk z2~Y&-%Eg`_zv>YQ)Y}*RpCnKPqs~rI14jrj_y3s)J39sDdcZLI=NwcTj+!e16H_?i zr}#YlTzp_QFefJpld(_lp;?6MK1qTqzIG_iUEazJb>E;T_~djqzhR7ln zIl+S38vkVtUS2@~z#4qKSY$x&_b-&7L<31+{Zt|klmdzX1)twp$PQ!&7)%-@24V#A zn*XuJuT?d_f-wn{4iB1tDWQ#Yhrl5JNpAgL^^gW8%MPe1Fu*5g=rtTwASs9VC!u7e z0YWKh{g(>-{QTU23S0u8sesP!U8o=jsDSxXg&a^4V1+=CE0Bb>0scXL5{mk_3Mk&6 zZxzE5s8^H<7litiN&;j*&n^AZ;bQWIq7ljnoIGH82$1Y^aRDpX*xUa`U0a_MEbuRp zc?5U>)VXlVS%%vD zzVu0)zvlmv8I@3lo7(}h{Y<9(68c{rj6k_C4=3kcusSg7(t=t5$tmC!<;6e$_~in3 zdAa`O0s@>|z=yn?{Cw5afCPFMYRmvGfc{gBf^%;U0odaVUO6&bc z2X25U|K-NqJe+_I+}ympsVGzETVV+m%fGL1`Zk=z% zpbStfU<^;dm*GG#G6UkN1c>=JoqqlP{~z`Lw1E@D|GxTvIjE|BK*56xWX_+_u`XZ1 zz{LKa3IGE205Q%B0HR;QxO5o<>k0-I%JF~#fEXYGDnd*wPM~z(BWkW2mz}b2UWt7v zMZb(}?ahx=d87(i-w;XMAKK{9C=Zo5ZXy_O~=NDc7uKnjk4dJ?h$qiKh%dRr} zufl)rBWMygFCJJmMl(X}vk}lWZKI$!p%i8XQe1Wj zc>YQ`LVoI>>a$dq3P(CPMEgf&FSGgLO*JOekkdB7KbS&%N@`f-hN~H-qj@gogb?uwQ}nOI({6FZqN1Cjx{+}znfHOE1$~UD5_!X-p(n!Rr1>%+pSxH`6SOb4>T zYQMf-e$jVq8@y?U0Yc0*RKL6oAT!7jm@bCj$o*>iTydX?fBW?*Cv*MQ4M zXNkI&$JTSZCKh80Mj-MLk5}`lYPScocT@XbTIy_%lE`P^)jg@BdcB2L?~K0VSY#BH zw}vz)xO07#P)(+65|^PP-;wwW1J1`)EA7to51S@ii@~@Y%iefRor;RixoBn{hcJ@_ z_icxrCrWzJcS$Xzd!-~+)mQ5b<1OU!{B`2~BrndTDv!r+U)Y|3F8i@~yE`r>nwGDh z#M!&F$6m{A*|zF+ryFI}?(J;@LbDhR*6g0BSfe*DeH%MJ^!f8HF{>163M~E`90I6N(S#ohGBVhwl@4QYaGzyr=A_3w#x54AsOl#<)qKYS;gba7bY3E zk(l`KnPAk2sGSHl78f`*DxG>eZtV$_=N&Tx;mz=D{dLtNyOD*Sa$WNt=RR&lbM!I*~^gzm%JH+8Fbz8+G^tfd)UXPE8*K}&jYsf$=>}V92c_~4DTNurXp`u(r@JB%MEy_i3AEQKi_CM_fqM3hT>sm8D#ATCgME9BC4;R|H$ z9A`7L7glvL8Ln@k2uhhzk1ejWp04@6KjUCqU~}7xy2Iy|d&MXEUZXc+>57G7Wbyc zL_$8>j_Zx2^RRYh;P*vz<;2t7Jp|siDAD?TJ>0RgV_W@KQ9-Lw_zX~D_1b#R1cEjhSNJa@DX#M0=t*-%wS+4iv|;; z);m19x>7z797$ebWoAX)SA1~mz;#BCo9#FfIuv;(Oy0PO7(L$D(a|Kx2-lmu}H_Z!96N_daIYhu4TjVa6}9ILodg zvIsBT10~gWBK#%mkzC45t--}TMgfMtBN%iKpYwgP4S%1rx~Sry8l`dc;u}VIRBB1~ zhONktZ<#s`gL*XC>Oy7tddd&t>^TK+re2!rJ&qV(Foc%xtikx7T8G9p5FXE}P%Bqt z3u=)vwOA7`#`wgWv>LRN1UD@oc_*g!=40E7Fb~TxUh@0%;n$`bc;K^-kh&4u6v<12 z_CVKcDtahwoWDVx!FTsSjPr|peEQX6<-z(Uykc2Jr7LaEdq5LrEb2FDkzB&USJtnM z=C7&@z%^~wFV9i1h78jP>?98*d>oK68sH)|FjIx)WhH16sVmhB-J2mLNd6$LJkG1j z3#XL}3sETrDGY4C^R!-z6g6c0YG|XYS=?M#z#D>qSWl52Udq%|;?=jTkY2H!?~?+7 z*vE-z^N?c|Dz(NmJZp=-$mBgySpCo|G4+&%k9d=qpGPxBOJ3h%yEn*NZr>W~yP#8* z`AIpldHYAPMN|vUqbH_ zI24EDZw)J}hQ2I@JNYOWDUlkxQg47w>Rh72=Ibu!l;?-6SU+fcGVDo){bg^YYKn|& zdJHKyJHC)NQI09H8AOisv<}AhtZFM&3|gVYlM0!~XK||VG48EWa^ifT#02fkGah(h zoKsx-$lIXwJI?K^Gart<8%NV(bt6?^ESdzoC*&$IWGX)@*yKT6&1s%n70D(gA4*r9 zTX>hE-o7SQYhg(Ehi3r86Er5ylqcj9aT;V%+sY306`0IK)Ir+8jFraU&D5s3RDv#L zy*JTKjeT9Ojv@HY17B$Q^Giy)sxKaG`AB@Hh$4WQk*xI|je3z)tH>$~Q`M{`+wJY5 zaDuUG(D+50r5BKVQqs~a=JDr(3qh6-l{4dA3MWBRZA z9lG8QpOkYTH!SZNDY?86echY+X>OJu_S8d1;%l434yW+q(i{n8_1k*}jpZMA`tRHr zY1Di;K&g(jYz<9Kpy5!;NWUpokdW8d7bn4FfISfJoL028lhnyn>rOHe!(#C4Px7PQ zV?br2g}AHe>XUOt;)0D0nswr(nQE7ASsD6m#2593r{wmycd09|6-B^@I4c~KoIEI! ziPV&}ulBly6DPo5hx?R_*-r(Mru0V@R$o8UmeC+F!>nm85%WSBO_$Xh`}!rb@WZxMmp1d!hKE@GwDp4@kc}QPL2svm z=Cm>>TbIqh*4Yoe>q~vtk{Rt$lY3ZPKb6|?uIp1+K(78U`~z%|!VK+oeNC7;`(=`` z{_v<$OG9Ht8eNQzf5Zj=o>Jo){d-v&4Pw!v&q6sDsm9{%FuRcGeFkL5%!;DawZfDx z8Ot^y=cjhJ2->s~;j1vD?EbPG)|wGiqKk zAd|vIj~Alf_mcWLnTL>FwtwDw`Hnny-4R{%g6jQ4nHGGNM|o0q>cccSJbbcgHdPOV z6qgm3)#zJlOG*N(mbOjDz0#6oeeVjdodmBe9&o1jmaRTmIfS)J!Y>hhI(dEX2&SJC zpYeb~U(~W%!TIaSbfx_pGqHxJZx9r@WV3jDj^Hh&I7cn@OYx6NwIfAtLo0WVKC{S= z=tT9vbL2DJYJhl@(nbRPpNB2DA^z0CCtPjUx8+rEXObG3`chJ!4 zF@9bDj|S@cl_L9Nj{NuSUj+Ul@E3vquOsleb1Ie`VlApqhOZznR$jC^mqh<0OYYzmQWop&6{Z`$P!Q{KbW+InaIqvto zJS_bW)!iw5g4OOQ$!_{qYdcoRweD^`*Cffzr7+rB%*@QIsdc5%)IF$ZO=#h?#f`o) zsakzGSe%YyM$lzkxpG)%Y^o-7`ozC?s{p7V6ML-dbF2L_Shh1Co5c`~iI{dIE{-jM zayj0IeEfNQPM4vOWx(S;Edk=0>ZBYYH=M~3>JVORbdr~`G6g@rt(NuhGC3*4?D5rv zo$%i5#cvB=joO^x4tUd4+;W`|cfkKiFle!U)TPK(w>4jS^!nrJL*#d4LtO$du9xg_ z38Y#r`zF&wi3oe1S*@#ON%jwZmVB8L!SN0Vo&bjA7SxLb#l3lnD4J)2-5jBPjuH#AV)`D*{xSywg}5u zrF?U`Fs`=||I9p+gs>vMNYIKd;k$+y(Gi*`vO$HX@+9k!#ns-AH{&I*#?tC=z96$# zj^-9exiYewc-|->M-4p?X0)YMo1ZMa)a@jU`%aWtdxrUk!l5xjd%2XbsMuY};!)Qk zD=p4=Ie9i+DYqSSzvnfD=gqxOR#nKAeB$~^T|}tzw-ZW~InxD2mIP!suyHgL>z=KN zlKM24l()BzR=U1<-RX_17xa}~*JTUCu|d}{Bg*e7@m$9Iyq#7@gvopVt@1DBTymX^1tr;T1{yV>SztLESnS|p04 zZFTvMq3U5|6nKY>dG(`$=k;jmQr&(&V0?%bbiB)L?cscl@FDHHnczn{25g216YLiW zIrF`gwWWAdEfg&G&G@Qi6?XZTKRc~1O_0j?C>N3zzL9*(BwgNbDE@LMb=II*y_6}< z_zO_%&2)7C>ZmxMbeu(Nj!uJ)j^ex`ZEAl@RYKgYs6Jyk3D5L<&OzpfB{l^1+h&4I zyNyD)v;{(AN#hO*TLQUX6-u_n)Ub6WJsUD(GFraOh>|B@k;->q=K3jV?gvniv9j1z zEUXYCGTWTfjlXNKe|KMLs}~`X|`pt7ncdusf>!1IhgJb%AM+j zHoLwIS|6INBiCk{Z`J4!4c%n z@0iW5Sr$#=SMM_r8tc~yL|2s7FKdR!`yReGbMO>YMnT*0vKFG*Vmp zM6L(mqg$&_O34ROHP*sDVPECHEfDXR{gC+WzW3wul6T<`nq-G9 zKJ{U)^hnYl*RT8T>lanU&2vASYCT|xGncQ4y1zfV)G%dx>w`-52ao0HN|lcDeAeMvURVXv znPiLPx_)bf@j-t?9aqcLI_2#zYqxl_gCK&HN>00XhcEHnW8e3-aLL2PcQ5+R{rWKG zXzlxbC$%z1=1-!2512~tvXcnlQs(4?Od7)-Bk+uM5)JGzRQi~Xm^$^><_zW^td%>f z`aNZ480j3rout;wI3qxY64twF7MBWt)oEPWFmvK0S!z z+@_hY77BZNTu1U%?$yV!a#@Zw64MYocz}&oX1%y44aNz!?2(;sNrM%46Rbq)@HJ1b zroo-Z*AB}~Jf`r>W@=4SMY5lUvPYDrZ-10>BMW;eHs|pjMiI-!c~JKuSb8FB{mbA| zMnyAq5&DO1`41w#2^hY&rXJEXGbLv$8eIW=!)7=w1uiV-7I`o`B{@c#9P$Ilwn zZ>7(sw~hKCbDHFOG{}Yy3df8`+O%ih%6q(3D5Be{sdE5({msix@DB>Bq%v(0$x$+Q@jRrm@%f79`3G-88sFW%7O`fLpQ=h5WKjcdw=hM1uor9GEV9}7o58lJt> z{DYVz&+)r);xrFhbVL>fHEh3<>M4ikXAL!RReOFMCFX)&B4Mk3Te)oBs}nYd!Z!A? zbA$5uPxZ0e@TFpvpFPf3YUGj@I}iSZr%yomfdcD5v)aHLag$!840{ z3?KpIR+;~sOo(9ee#Cc;E$>^5)b2h?=JNOQ&2ISHi0IV0$;vj;dJjR03nGG#hR6kH zG#8u=%gvpyrOCZ8B)?@tpjfJG&n6BVB2^&sobevL!Qmu#88L~70wMJz$4Hh)=}Vn$ zvtrlZ7#lWXVF(gx``k%|DN}4|=erxyT{|(tIF6?+8V+xDcnk(}MXW37mG|c?TYj8@ z*ofwmTSnRXBGF+LxVZhrYiOF2=wWvR1X=|Q85q}iMeGtI?Z+3i+W1)Wq0cY%lG$H# zJtpJxil&NWH{zAoLD#4esd&JI&5W`2S@*M3WYX@MAOYt}e9)^Mb^0*+Lj^iI27J}(x>AqA^>1xwztn^!1!%cn&Zm79K7r1w%nBPLU|yoy6d z$Jh9J=<4H&90D)*M}v7XFKE8ADYDY~Cip)RNm!Zp6wr0zm`Lhzv;Y|(E>(hA$Xjr~ zuau?Sr4z8QeIuv-SV(8}4CHPya#RT{Lej&o$FZ{oua@2kKq8vx-wo{A0reI)D#TZ+ zMMS)?DqkLl&jg;1AqMsLbI(AdVsEdPe{Rx9Jsq$0Mh0PAzOg$h6McV3G%*Vc_tv)O z87O1$SbRNW%k7xy+Zm`^mDz0Z?b^fB`;^@$;rBy-+z;Rw~0`S9bTIm)kcHp^{b~WmbpyS6SjvwU0A8=fD5| zAMXFB`@eGizu@2N|Cqq~KRU*L*8l&!Gynq=Sn9{R4BP<_{rn05tV`JFsEeL1E&#x! z0@nWtZ)jeII04rH0PFwRz@7WJtIS@$M?97`=efl@r%n4UE~kU&eDxn_01LPQAm(}d zKm!C+oEVaXz@7gvf!qE8mk?x2y`S6q2HZgK=B{YgMeZ&m>9Xo8LoI#-5)wSZu#MZ4i;u&!RAKiIVPEMux)D)g;owCEeczKv(VFO>E z(42viDHD=M9J&wt{XgO)*Dmv33E#(eXWsJ(#mcJs;Y`Tc8-{xdO^gsP6=uZHy(#!rZ}f>OV<5`Fw? zuaa71&ve%?k%U=svr>WBPT;W7{eUtl%6@H`eZPCxer}0hJLkfJNfvhtu z$JOvT5AKNUPinjVF@NOW&vWqv9GRz9x&+O ztnFN)Gs0s;?AozT-dfvyUt(iiJ3A@+GFTI$F~W7GR-8w_gb*XlwL8X4X<%G6?sd7% zCi;$kK{5Kp43k=v76jNz)22@-ZdbDN=hb`0e%nl01?6{^Op%g?XQ@hMHEL7jO&lTL zdW$jielUf*X6PsqkTsF3HoQkjeA6KFt_$4I6)U)3XSis?y|ldM$S8hoEX`r@mX`v9 z32#|DqBQqzTfv7Mb}7~$!&khRLL;(X2q`7tzgB#9c~p1tTKIKPoXkRE9y=br@7LSm91HXJQZmkWOSIK4Ts6u4W#b1B14a- zoT#jgREP44?p^n~Qr;t9^5+!{=vSLmB*Ts;m9KS0O=Y@wS`!An)C%22Gl0=0!EQH+ zuuZ->1MzuvX0$#mTbYwzrY%>g&G0ac@*fJ)HurS_>BB>PN^(^vWS-A6QDFeSr zA5+Dtd56@ zXk2jO-8**-dbO2YiV~Upd{sa$TI;Xz_?GS79woL_^{%v4rzcxsO_4>6!$iftV50+R z0r!&A`Hs(1-7GMnpbgnhgHE2X6-7QOOG2HSrAN%q*ZXm>=(Pxp^q#tn+R2t#$WCVw zRpUHonIZU6?Bx#0$lDGZZJxWTH! zO=g?8)pr~@AM{Bbe@K*+K3{9!y088I8})*;x5a6ofD5%u>>aGFg&(WfWNNLdr-$)c z9sRTE?%e(B#x%%%PewCR8Lyc*LgTifY4c>3VtH-DglB2rcmfbZtNn^g>^AJ5pQ#f{gE$*GN3*ahYrDW)HS z(B><6$HNi~Z^TkIaA@Cm-7s14uMtp567vn$N(h>5oWG=9`B9I%%3eM<`i||pN0A>V zTLWIA3x}}^&7n1MrsLnuT?d8hB4dn;EuQJRX6}nYB3SkBCnzWpsw)sPj4-p>A(HUk zdsqZ+PcLxCy4$>(7kVN@cYyn4Z(6B77^~5a={RIF)_myhK`cCNVj#gj3YR4wR-f5# zF703KJxWCBlv61wq+dC=cbY$4HGk6Czb`hgeaO2)VeZP8+Zw<|8#SC5DBX+PGP=&yK1;NA!tl~|Isbos5QE^9Z_B1 z!!OZ=BYvsuv^%(InWYS&A`Y+~ovyx7vMO!3Ijv~pr=B=$$awsaTjWj5w#V7qZ1*b^ z;g7pRyOK8|GAB74MnW+3NY#qb_$a~-c7TZ4wDg=TBl z21r`GDnuZ8NS17QdTp3G?z{NoXH(n@FE|!6j62YVkU-VM z3L)wUw@64VFfV2BYofBD9UZl0vZ?wE-*6siF#q^vx3lm~87z3EIC)6E;Dz_BR8#-9 zyk3>IkfKT0v)|E$v&Wq?w~gvPE~9qvh@bk79%%v}j)c3YqN*t4*C6{N0#^PWW!>~vI0mK;Jaz^PSL(MVr; z24bQRyL}!=r@R!Nqw1rjMU*ty*TYx;sxR}@fT#VrQIl5KyS;(-nTK?n?eWTvtv23 zX4vk;^&*oD%V4qj`9VShL+MCXfxx^8e;>JK+I%uDp1e7;xGySh_#zC;PdRJ1Q!K}0 zFqzIkF0du~75VwA2{G88p+>FaEK}x2&RWB-PBNqYH`FGJ>WUxiNw@Wc_niJqEn;8FjYxj1k4N>i zQ_Xm?%LN@aPfNd`lkCJT^K3RQ+2bQ#fT*czCQQq0a3`20G~CY8;2`p9nto4Lm}4m~ zOmDAq1A6g+78JM#jtT8hp6FF+up?B?(~V7VwTix*DPO0%drVODQTxP zXXDal9n}NJq4L~=n<7CY#7|sHtM2{2F831OCZ@5nNWx{P~{4 z+}N7jl8t78TmF@Sy+xYd_>yL$RZYUWHwMBfTXjONJ8;7$ec3X)2J~A-=4|B09pd-K zDJ+Cb;)IU8+ZsBbHxr9PEYj|ZndsrlmWkqw=)cW-Ho0MM_+ma8ldxl&nMvyyebDO~C63f(E3 z@$U-r7_+;E?lrYdGcy!SO(lL~iKvOV;d^3AX&Kl5qq3;)RRL>jxSMDT)7P-A{;z{+ zQ(yTR!1)P#2J(af)|oY16ePCp&NL)PkZZ(A=^%=nq7Mb3-`?0)}60K6$s#kvQV9MIuE^B}>-%37=~`f8^1NV zvbz$zYz(VN7N4H8FlrRd+rLbj7rwSynfVq6#{Fe-BjhBSlYZj~2Rb(^tOz3NHicXCi|pMfM9^}N*5 z31E8YphQ>!W~04F(pES_F?^p;g}Gox(E8MFu?x?cx0&C$n^c_M+wW63lI-uqT$K z>iWeD7xj!Ko;IB!tlodzCCkE;^j(gY=Mj==h2j&)qf*md`)m2Z7qw5LN9@Wus6WWhsX$jg6pCX;+LtfNt0d{K5ceF*r^K7i zwp8CuZnztjG}+ahR>f`}BGfdW6!)~$S+|v0YP7n3(zVkZp)J?(r0V+(*MZjpklOh( z&{UoPJ7uu%u!jC6DFvn0Tc(sVjL3=cp1or+t>%2X_WShIP#U!tt;KiKHs$CyUkjo8 zzV`p2yHA0{YKc37RzW5TD+Y|GJ)`VxKf+Z(B&F`AkWRmv-FNt=^C) zc4|ui)7#I$m`QQ8_^?) z=#aV%#fIhKp!EeLitnA7*rgU>ggwt6q&GFJu8?`qV#$^UQ zA{)`uy0OlCIj)8==kxRqFiU-U6sDM*maq`C#;m|_1V%q*W@EW7TRt=pDUG9Nn38gA z#~dG9zewia%SeM81-?Z-X=Lw%+T5P@1MvtIPeUdB6y(_5)sVB5xr&E zw)wo}2a@o{@l)N$1|mC4GuuMW0xGT^RKYRUY&3f54bP{}KwS7V$99oBQeXCZ$r+!! z^f$Bm?Jtif`+3%}k@pPVUs|N~EJgo8@P_yMN5{Fhk)p1i;x|5e`f`zlEIBmD5H~u( zs<)C!)|Pc!1xS*mF-iqkQOif>Se!D4`P=%s4opc zxV7wdl-l?2m2dc57h6j|o?dIR%ZhtMS-=A|n-e0szG=h6g6A1h-TR|-M2?u;@VN9P*(}U-T@#jfvB`Emm)JrpJF=+lBLJ_wkN; zM#p@Da$H|#-`h*C3UKMJ)nEC>eEBOce#|{bKKIGGQzdaeeW!g2&HW6c#J#bYs1!P5 z%O<+^{DSZBgWiS$^Sf$RX7eqBZ}%yEdOn_$`BqV70E>ZVKFC3$ zC8xQQt7eigG04*XAm|xM*w%f*0#9Ni5hlbUO6mF}v-+Q5RO<0-|PiO~muuY*kN;86&G?EL(pB^#siKQCFIK z&^WG7lH$7Xk<18;jX=s5^IRXXYM zYtZ=VKiVA&a2EX|wSb8xc|0{;QwZ}qRbpX@jeiRdeIp$-g_Gf-l&Rx7T#&hHtQ#D* ziZSfA%fS?D^(YJ~= zkOxK8-b1}C!0FTD4zcFEI+_8m9BmVrl(pc)BlG=O11`J1E}4`gF4K*Nw^!L3#`5Y$ zs?2iyJal05EZ6R+bd3ZQHc#h0q?xYxtP%erZ5wQ@zEyS=r>u24ue|!o(5LIb1sPL$ zY??i?AB=^G+ng9E#nu(Alfi=$Cwk=6;}lFHH#5zLZNvK(q<*;epJJ!0>HPS<5#8yQ z$Rh4H>tkvKzZudrW1hv0C4o_!i_nr^hP`wtawBAU!}vBFvVL=IS$DBtc4=>;(><~_ zd&8P-@8-!w?@Rg(ne^`F?@Bw_MtP^SG4A8#1)~B5(YQSYx~iQUk#)g)r%>lq)rr*D z?^ix0vWav*`n+BdF(2$=$T|QaG|<;p!;O-mco2QvZS3irKYmq&VHh@1DfQuixSAkt z1BYzo&ieDsxf_U=RCB|XtwZm&AANJ;eZ$HnQ<$>S^6`@b+U3#%FP3ZR5zoVJi!pa6 zcA^C;G7`h*js)?J7QPHAyuqtSZvzlq|eAs(n%&Z%pD$ zxG4B?z=i<9C~>vE{Ejy;a|?LJL$e)Q;_jxW{pB(dB{wnqOKp8yZ9T#q!J|mlZ80YC zKxt_c?cO(K*v22B<_(#woiXT!Sdw=OjFxajv?`!D%c42C2)Fmm0-ihcPJ)PqeinzK z$|Dv!{@yo7Ol2Lq#OR5}P7ODawm~KoYd7BaN+2CfZ(D*VQQ7 zKQg#HizORqpI8j<$gzxbo3Ct@rHCO3R-TG58Qrs!rq3O3cLD|eKkU8rQylFUH99zf z0D&OE-7Pr565O4^CAbdm1b5fL-QC^YA-KB*28ZC1%X_5GIbYrHAGr6OAEvsxyJ~uN zKfQa)T5Ctj`xd>{NO@7M{+kL<{aCd|n-uam!|*)g%?Z&GF^! zWlhxi1x%?F})Wj#oyoxUdSrCt={Q<~AmA5BbJzeI*M$w&=2>$_uQl)%isYxA>_SjEN z*qrcQ(l~Va12A|5-YJv6Us0rO=7~~)W(%%kj)BZ+`b@2H7a5gAymF3=3=%d8PBXK* z=6FTR)Ae0)%IER*CyyU4(6(YZa*z2qQA+NB(a`?@G$#-6dTP-44p^q~Ji=V?s+?Mo z`K7;KAyWg%X9omg`|^z}7DUiEou7+prkfg}C#*ruB8|l2IOJ3>=D_BBimWp*&_y6I zu9Z09D|oK)c5Fch+Y8(L@R4Px+9k|oVabwX<)lQ4p*3w|k_6d*OK@s#gJX1wmJE$8 z;;^PCN*yh6lV$#*#Xfc`r{6|?^{ACG+ zy=>R8rSJCLj@&D&Jo(|PgE#)rKhibMY3~zdvibKiFdztkD(EltNu~Z|GWB<tfykjljxOSbj=vecJQoZrB;B6&cPJBR;OKtVjej4V zENxBehnnF@N4vPF%8yhdZ@rHL9&Eh6#hAiKc}I|_^zM}-Csy;{aT%;k!NTL1CU>~D z>yf6!GTubnoDbGuOB$|1D=u5$EESX#d@TwsdW!R}qJkd@8EEU@*y@^viG;37rmZn? zQDLmN#6s!iQM1`0yC5{Wky?WV+_P+dj~f!bW%bVkSd|dY`}pDz;0ZWq20V<6CgtQ!6!gG@VxPL%whwcf@-(fsM$L|W$3ocSdaM1b>Y}St-2-P z55RZuhu)FFDMbarmv8V?Y><;`qcFd{{gVjZ|B1Qv;7YZ z503!<1_t<__CLlO|DWuQ{qGz5*8k6``K$kr)nni%Ou>F(uRML3%kjqkkDD=cp#1a~ z2H@@U7mxtqpTF^@06+@Ef*}a2uSoXMjupz_QU-YM5!!N~fqf19@;&!IgkxU;EjNYpD6ZRA6@8ULE*vL&zw zY8^w53B(Mh@S-o=Y)63FbYe zk1(HJLMfwNo2+X6=%TC&&1Bxj!YmN$^Q$U2mr-_*CR?0J>)s^(#Y>GL`O!{hGy)6| zmb+q3xb+bOfBk8bgK%6`?0L2MlfUAC3|B;`*g^L!mv>Yut^x2)N;RvV`K%cEH*jvH zoY_+@2S|Z#rBO`@WH3hrG4fYq9?2Ok0IsH&WTlf6qS z8o)D>@0n$KS*#s#IQzgzgqU_j>@DA@%NXc75zzT$63RYt9K*;|>((v)ERnA-e8j=TJxrUqk=Qi{)K zRjNue3DIH{TVnq)bAL^P85(Y{LR=&uQ@4`m#i_VNvpj5~{Ne*krtGgPMkFO0xh$A$niJNR8^JB_Y?{k@>|x;XLusRt)tTL;zsEjKUqC^Tz^>)Zu=Cs z8!m=Ml0Ps$*fA3$8+Y2Q1G|}4z%k+S?3@MbY{<{k$kA4pRtpawEnfDVt!J=11K zipr#6Rx|7!lyy=#jLRJzarTOjMtyigagG$R(o9bFQ{T8+ew1f{M(s1}lR`t3db$02 zed1D{^H+5JzITG#i-YwXmEn84MOK~fxc22^o7Y<+thJN3MwA38g${1q`e(Mt_dZW; zvsx`duTaf*Yrx@G=kkQDNSs-S3le+I)!1r-jeG3f%Za`Exsni$vvvQs3awVH3-p`~$G4T*cA`%6O0F0i|@iciyc zv**WeTJT$Mr6}RpMi%e<{+v?Fd?Q$><_oNRSa7`Mg@R;rmp-HdvLYjvZC8^1mwWp6 zQnQ#$0I;k-&$8L(Q0Pz(c+NXfwvm#!OIGo=+`i4+t$N1C!?dt@o6#GuZK6et&Z89a zAzPbm7UWjF{$bs_O~YJ8+pg-diByw}$H zR9+he+x+g`QmP0VGz|6PzYaHEOA8+L=jYbiXpx>B=`>$T9?2<}4}R$~>c zpdi!H`RCgZ@gf`940?zg4}f>Z8Zw#@tK*jnG9%P~r^w@^mh9SadJR9%TBbnH%=avt zTM$2dD=0b;Klrn?NFX6wDdWO|&T}&dXMN+z13A;)OQc|g-pQyafmUiUS@$KVo*$%Y zoOU}ChL7^9`q0+c1bZ>3!a=0-pq%>wWitDUCK|*Ka@N4CTv_!KJv#}HX;ivqEWVFq zmyk=E=A+}ZDVZ?mtrupuZVz&|7G@-!V?Rbl1X)ApQ*!aY3L5N;oHd3+Jm@qbQm0Lb z{nvrfJkIgFW_@EL-Z#U8S~a=-a3K>LN1&lqg1|AY3{vRDBfQzW0*ge7@ydzBI>`&P zoIRILO@o^F*h_0Jqf#LTA#i`;QFHTA1AUvOHj4SOr9J3F?$1@_sawr2=#-qrv+7SL z0$)^lc<4E{qZ(EUH-mnR4Yfta{0ey%zKCk}PK6dUpI)5wOS_%+f?dEZ-2d!dBJTc< z_$BCbk|FvzZGoP=dO?|W;=S>$PTAGRPQ9kKC96JCYmDFe+wDWFY=Q8_s9US!#+wIzu8ImC)lC4KTYKi+>5{#Lq4dehz zWm4QMCsxbcs=d&`o9lD$N5kUcl3>*jN>1{hsdjclszi@%N+oe$hbk;Jmg2pXo|||B zC+OK&7BgZlg%;ZCqfr>It_lyu8GR)1>=r948}?%hfFB&Lt(Cbef|*#qJr_{E{=Tz223ph*jw7H037R9pQLJe`BX;5KgAhPf^+7+*lhhf;Xi-IM`V?AV ziFDj&Jv=e{+GsTwE#F|ADD5O8R}+DLD-_URq1tX z%6N@skDL?@j@=Bk8!Olxsx8+DiY2=vLABa&HE6BR6Lp_wawiPG;{5^m<=1i4L)@?m zPJhoh>%N;#wjlw%j3H2?=%eo~&v9o$iK^}M`)!PdIjCPn4SKzM+9$I6GLiId%452+ z2d8C!TJjc7YhLRW{A8&Ik5ebtWbz=76!wpJBWL>?W;QbLP0}xmYkK<()^}ZaDhylv zyiCXw4!S+-$|>^tM!fL#%VhH7XSDds3}cko9mbsm#+v>wHmDnM=6I4N3Y+`UaoiPk za49MDUy~f++S`yR#kG(&W^=Jc__K^Vk9Bl3_u|r$>R`N8ll1Q|VAe~vu zR>L;-3;Q+Xe6 z(hWD@QheW46)Et02_t+MW@OKc1E%Q<8s>%ZDphmr`y zhxdB?S(CGk`{v8szhUH<0c*w6BA>=s|qSmi;Fsm#NimRwI|wjZK5V0ZGv`M zhQQza#Ep-AKM(0#rPO6d6yxX%Z3_oRBUQEX>>=+1#{={2j!Kui71KQrYKK9A=%Y;8 z934NAre=YQR9tn=Rfw^xPG5^fqX|XsD?SH-y}+D(1l{f^NBqmo^S%Wd-(FY8I2#-& z3+Jjc=}_}JymfrZVu0bKjr$n9d&guu2b?Pj)`fcd!nxg){n7X4S&D<(@=o5MkKC#c zA*%n3v!V2}ksK9ZRJ{onmN0nD+8X=aC5$;dAZDnL=4>iHQjVviT z0~!088s>;0JvgYNZk>u%XWCh^Ws^tw_3pB1WZzvMT!xLlIPfBn-LawLMZdY{*JCy< zsVoqANka+UE4ij*VRm7oc_0=wTkT~FExtGEnayVnyW3TL2~?VEbxO(sC|i!o<38U3 zoZ2LRjpbE8&YRw*)b*!(&_f&+D_fgwMWKnX7Y~->@Gt6E;e;{;XkUUNO^}q*8X0d# zVdc&7A{bCMj_9T8%9O5pFlLRbpAd}%BR49w2M1l%59$;FBVXm0&MVhnO#WN{@2`v) z3V`{~#8@2w=*ax}db}v`Efe2(pG)=3s#j!>w7j%ImuoPob zDuYX7qI3SW>$e2q#_{J{Snik^EXRt5OsZ|MzBzgUd-aQu>n{|abGK?kxjLLad{3uM zS@j)3P3r@77a{%uNLI)<&KCg}LO*#BTQ(Bk!d@Lfu_d@^3wjQrG}GQt(#ji$KGLGB zMOtnx*fAw#j0usr+5`tPb{>&pugMvtP>_6Vrt=f7b^>L#Y|LujFkj%ZiE z3PpQhN~Az{yz|rfS6Z2qjil+rvZvKYafpDoyG!Em^b20A1#56n`~ZDshrqo4WgdKm z!Sj=u!!26(`058y=E~;o!^xz93GstmMq?S)V+$`v zs9Qj6oN6n(Vg?81f9A?<60+AHv z`kf?s{%VaEACx3&BgZZF{O$pPQwW^slWO-awcV*=9d1muN;oX3_1a@oLB%o9nei#O=|H*%;$PPNANiH|3{Lw^8hva6@1Uf!GJ!m%;4wuOwOWJcK9ZhTG* zbvK&jXIRC*_Pf#<9zZ0Z(>X|N6Oe)fL$;+8OO9@Ri{oO1>9CN`kL3{r- zG^W9CL}Ma+qf8aw@ttVB+@yeT>(>CwwUilMdu_18i2Xj}<}n0|NJCn|H{zy^_Ls4w z8e7@%7Q#28FzaR^mywKWmR&Xh5iI12CVVGCXSzML+O4^!=JGJeMCyCX{shn_AU_)b zhIaj+0LJ%pN1j~5RC+A^uf13qii0q;FNNru2vE_KhZ03 zPG5?^UxpSD%P}h|pp>#*RU%Zh)19YlKP!r!`z@dN8kE+Y!*wwlwp5!vXx@Qx2A8Hl zm?u?IlS=m04NNOHY0dZ+WQ+2PWFImgNfdehXq!hLT35tS9(=Aj>GYi3sEkCpn)(X9uiiJStQZ|T4$n6) z{cJoAw1Tbtm2pE;p{D>{V*bE%;@hc+3Rl)oDJ^gnjbUMqypH!=pTL=$1ESj-I17%Z zreYs_00jbM3Mn}KTwQ(PB#EX~&y~xCwIY3s*y1DXm!7o+$5%Fu1CDdU6fkm*w>3DF z%+&9$v@V)hj6LTORHiy!N63rjfu~9%%7}-R8^eQHkr5}R3J^YaXoc)DBE_60S$BTt z)V!ZM!iEqm_j=#he|w;}LLMh3RK?klP|ZiYUwd@MV+@WisP$P*a*r#YZccGzBHMDU zOll?LWT!?yB!_NKW@mCf=}&0_9<7=x0Cl#iF09bH&Auof^|!p z$l14|R?AT6shbTumk!=))!FtN&qK-(*i;9(0nK{*n?(P`_?98(%sp@HCg@M#(I)h% z>`tWHtiqIOGt%0QSaOs5w?O*H6z&m`BfFLwpzHxM*_7^SoOROkfo`654-#WsuiFf# zRMNAF4cOSSbXbiL3H;2Mu2J<7CHO&DELlXAPQ}nkb$k8CquAd<~H_t<=Hw z06ZI2?u7ovH`OZ;bLKfyKKmGNDSNwPHM9{Eofk_$Sz*6@z?Tx&jie)|S&wbzBALRCIoReuv zAO%H7;Sl3H%H(uXe5M7|t`B!o(=JYQH(XK`Tx_C}iNz{>R_J|dl$fK~%#VQ!2DuIW z?B!}!+)wTF;8|Vb%hVKVF-*e5E;C;P#PAF^bWH$nKuJ;(Hmjcw9|*{mDD0ozE(ybT z)Ppf>?p+SagG(z)pQ5<@1s&W$X^W=o(S4 zO*umJrGem4jQsdwg&oA>3M6$cV|x#47<5`Y3(a_sYbVWhlLAYMP^AjrwLMrj z2i9vNvnMd~s~Ud*t;@JhPB5!=n9HdfZ!gFc@=Fy2=ms5exe1ywC6!sYzRjf^_FC1`*HeU^`LbsAoe5W+nK=8iY4e&q&J^1zs}0Qw zYynZdeu2Z-Mk=x_iC0XD)P%}mY_^O&T-Nn!^J9EH)Sig;wsC=R^1Iex;15Z0rF^Di zoR>+>21W8X@rRVqj~mK$#7cYZwM`T}QggNPSRWm{cosFLeE0dpue5^L#V`VvjmACu z91Chn$djbC!#8UAH&@Ia(}Oc+TT_RJTu^)z#5g~C&l?fcDiu&I&TLsOxZ0J&7x~)> zwERdlxu%V8_{@Ex+(|)uq%wq^uuKnncUcK_s7||oqlTqvb#5-9&X=r9O-xuf+?e0I zgz&dHIh)alA(Ieg)wk;~}Om@!RIP=Q%iwnqnWvh+KP4o4F{y#LTFLnXo5eHbF1Z ziO!%KbPC%txz}^>J0${L5T{8;oY@PFt8;y1&jd!T1(EQMG%HIAQ{u{xji%RUm1!BN z=AiQ33OYYlJ2N>rF3~>!F#Z&oi4=E)!ir|f6Yn(&R%zzmK$W!Ct}n6I84-YFCNw2p zPZqCBF@4-&$ZWun&oC<4&DX7!=jFxoUPFmN9VXinhRdIyT@Q`(G3py*zMWzb(kUDVU^hAwsfaFL z-dpfcr5AomT>1egt}U&IA2o^)Q8PO038zD;;~!dxk6xia#xAok)4x6hL+i1XB+WQqa6(B;*iohD}*Rb%zeW{aUUtAwO$PDoS^wWe2XG3ClOGx%5a3F74%|cgV z>DStP(g%oZctEt;Q|W?jPr%)FqKb8+P?~^`byjY3RAz0KU2XwqZoE<9(X9Lh9hYQz zT$%YOUk!fFr}278OTSPIvesZtO{PExiW`chjk;TN8>C72k``*F779y7iFJFs2eF*1 zpeYP3H@Y@+>I_Qi5JmVSenO7$HqE@ZOc>;>E&6yg_f3zIDmB zIjGE3PEhF8j+Uxp51=!7v^Ck1O(~T14*5Z+H@R}AUC48_=MC0Zy@`nKR-Ij$E;KG% z-|luxFXPgtMY$7=Ccv)=u&!8&38l1Zfk-x6m-zYQ8nP_L0()g5C?3ErVk z#Xeb#R+Y%+1-OpBCC~lD?)mRx%MNz8YlzfSA{!IrGGZdJ8q%-=e0IyApV>tti{}d) z>+97{&Kfwj)1OjE7Z;@Fq<*eYTvQN++UoN*jS+FK)WjsDuxg`r)(x+kwkBw4#W@!6 zhi#1F!00xVs4>T-C9(EjDXsMRr|Sp{R*b*|1J#a?oW>Y#UCQ+Fu8(NVVK3ENZWh87 zB6d3tvf&xP8t^_}=C9+M!SUA&J3?oJ*zcXcbs2*pz z(w863?)>1JI=Um^3nwhREtX*`6d5Sno{|6PeeX!Dq1m-IuiC!20tm znPw;H2mtjp6prrfPOw^n07Ia)!@WV0a;xBp6VzxCpP51{*Zu^tn*snzN2J6OCAJtW z9w8O3qMWOi_I+>j|4{ye|Hni5X93{v@4qeZw*~&Tz~2`5+X8=E;BO23ZGpcn@V5p2 zw!r`2EFeCXM>iIfL#ukP?U$ZW*kctz`qh!9^6L1x57f zmr%$Q(JC5ypqk%l%r?0(ElL4A>5w7-{$M8ioEOC{VkFxez$U_R?k>!goXgCZb9; zagF16#|K~NL*u(M0)jR7h*i9Tn~m%RP1}k3oGTVX`SPop>xKdL#m7;B8hRW}`MGXB z!|i>hcZT-02xW2URdDh#e3zVh>cE$VUPGff2g>c$aei_6%AD`~x*FOv5H*ZVmPc8; zcED<+Wq%x#6XCgRq)>kF0DdDFm4@?%P*ig`LAI^iU3~FI4Uktjg3J>LjpeOh$(Ccd z?@v<5Wg?I7fmItS~|rS(Bq=rw<`9? zS3*OQB@DB52MrQ_a{bA(qmqKcehlJ_OH7rDc_+nGfUl<`nG5dWozKpd;A-UI>1z4UHF zUhl5>dmggd7B#$3p1iIt{a^BJ#-8iFZ5{{&hR$9#Mr$xnt~|c>wtgEleJX7BIJ#@L z!x|XY3bH>w$a{T0uX2cW}}Vz7|Gz2W~^Kf>FwA-qlR6C%f~=}}_8Fc8L?zO;7` zLG+8`_)Gimja>kP0Q1Hr_!sUU8Xe|>lts`N1NKe*?=Q%I&NkWQ+Xz4*CBGR=^8W?@ zKSBOYt$9-zfE}T*BbTIyjTBv8^2tV>k%b!cy!ivDUdLJWs^>>|f8%DzOnlaaH6&?x ztqssfz<^r}-Bvl63<^U9v#@xdq5+4kB-LP0z9-Yr`EJfzE;oMhhWQS4pQbnrMoM~f zZ6}4=xGd>^05(kGa-KRD1^O{QY37)DshjA)SE0?`C%Kwa?-H+(yAb-R$9g5B62yB4 zVquamIIFeN7+yGKB~(T`)8%DY|L1U)H|ib~(-8)H9AQm1!-*?^gUV;?4?uzEz`NZc zSZok{d7*ss)q$I2q1o9nA?7B=tXUXFjWW47UvdP(K zJC6_v)FT(3=}5`lRvbU`f6aILVw`;4DIgqk(g*VCsBa3aY-nPMzT~uS6>mBSLR@6g zBPF9WbX1xtwWSkm80xJ~kK@rdui=+26!p1(@c#oK?clyvX}xAFuZxt5Ey@B;ZOo^e zq?l`(oqv__Ds$rdy8Ii>B}*A4B#7v(X_Lrh%SjQeGweawK$stCnfuY5Eoi@?ly~0R zKJdTkxBuAwgjSNdYaQ=$UJ9>NKn$442B6v_unlyMb#5=>IZ_O~~ zq-VWr(!=&?j`xER0Wk9SS9A^fT8%sx3uY?OBTpP7`+W3wN*wsv2v<;(4AwRki)SZ` zhpir^b|qIY#=+L&Zjbs4tdGG>i$yos=4`Fz=+k00hMfE` z%flATB5$58s)tuJ@}%Fu4X3`vd^L34uMQ?rQcb!MR+qX{l4v1{C{CM|SS7Kz7xJLNWW45RZE)W zBYQ7nO>QE|8G|@yrY^^^!{E45{A3yt@6nl)QbKld{3iL4ZdO+0{O4@QCr}qYsmtIR zN?UaIqKr{~X*AV-i&lI@gGg#k^8efkTyO6!$+XjJcCMEp`QczrjCR4u@;A^@8U7;w z?+1%U(~=jXIUD;9Y8>L|l7W|>(=`tE%6w9@O)WD-WqdQp@q8@r1r%IC5_!#pP5cef zicDq$d2M<1+xE5|Y@|3d8xd4-1e00dIf^*FHTJVBhcN>f_iz(M!_wf@ZI!xtxy4g{ z-gT@u$*5z&sE!i`=DRchnIs&dkKiPNhYRSt=#Lmw^WQjOn+lUI&r9WwCpx@jv6^RC z!k*P?ADAEi02-^^soUJu6pmsH4WH~Cxphov`&cW_%qST8V}B0Y6md38OpLGm;O{rs zidWHGT=FRMz{&dwHT1K8Fs&%be0Qh&i$a@!NyiCbp*3f2t+s?9Ot;RoxQIt7N0PdZ zza{lSSsY`8cW{h|?!$foeS_S5M=)~ycR0HiIi&-WByz+duyPNMx(;)ZqwVMF@8Nie zLb>I1SXSA{hs@oo=qr&)qK{rl<@G;^OA))04nlHG6T z%91tvKLC@gsp7%z+XEtG$@mWOh^xSRI24=S;{3RY%<>A(D~ZA*SM{F@i_Ascv4%zs z{ZY*1u+8`xkte)x`jq326nVscLnY~5YkP)c7_706VY|-vOBNinn)`P9)`hW>rMcen zeYbVxQum)OlfJ2ZnpLzW>uudyh}cV~ETu3lgePOwFIMlqDx$fVGFRUS6A^7SG2jUp zW}QzG<%!`9bP!ZbbSuTlTt1rh2(Q$4+`;@l)^f!O8KkHi@j8AGA8g%4uy^FbZl$Ya0+0hvyIn-QEz@Pu3-FT5S*{Q!nTTdHtS&j z_Dy2#9qNv2&6Fqj%<;Ab%d+H}c*!a3lmv_^d+L)9gozQCtltRVDoBzQOh<>#(A!#)n!O zcWTk@+d`JxbBRM&Tu-tu(mj!2*F7JJ?XV$|_s*NaL}!@x2Z?4!(bDhe2CY}G#bS#f ziUxeHItaPqaT=o%=S)I@&ItY?Bh`2gp7U(c7+nuM23;^gUBeGS7K)&cM%O z^*j@TaOeS8_^p~yCb`{}z4&$YfmnLm;M1~m*WuW?6nrY~JOvzFH=ozMKLDP+wlwzI ztMQ4kU@pZm|3X6tqnq~uex$qPa8C_oLQJ9717l&8@)CK+46e#}h&6dvLg9GNAK-|4 zJ7ej{x6{gs_a*;ZS>_+xT zWeBfb-r)M8|L*?+vL4+2bRX|?fAh_Hj6AdRzKHE@C_3*;^3RC!U#Km z;-w6R73s;PRq2O81a<~{AojzEQSX+dY8u=0uA!C(+gD?rOQZ8^TrLz7i&OppZj+g@ zHx===pk2-TkC%a9Gm8@Cuk$YhQQaX?XR9m2dA&D-Ga6@Bt8Tar!y^!;mRed@u5#|r z(d@GlJs+TUBw)@fe;mviwz$*V*(VN7ZA{R^NF z#(}kG@KEMW#Bc8sPrXvGA*Zu5d-Ju#fb(OYJr)jcI0<==IG&Sq;#}$V*xYR^&IFCJ z%otyCU28-n11j=nD(4nju#>CyJpVqbDrMJ3O@i2x#Jl|)E@-r<)J48H9)q8DJQT}u zkL!xTxrMJG)3ObVz18s?QbC(XSwi7!8^8FSrqDnh4vy-EvUR_(R?eXK$c1aX$A?-w zypPM3nz$KUh`+uJDNB?||JV#(JF7+3Za#pOW{rmMi1|H#4c^opJsYwV0PZe-FoNeI z@e_ic8EyiAnn+0WRH^Dk&7e<7B>fU8sBSph6Wg4jj0qPwc#UM)2*aEM;Df$@i0uC8 zNaxs@4t3Jpa$d@5=L2`fFzO2 zx*soIRnaQwP{r7ZFR8Ux#JLMa5&;bQf5rc60RRsDO-M(P^$nlxtxDtEQj$kl9C`?R ztUiEDXI-p!`)ZqVPiPE0UvAJld}o<`XS7Q8rSV7j#JpF^xgpsf+r{=;5P~+@R7+Qr z_MU!>stKs*^Y72L>djdRMBaSNgO@S86%au=2#%qRJk2&c^O|tQ+lHKW?V8>G0aUbu z`?H{lsNVOg*RrgNPy4(U%=`g>e(Z(|wAAZLMkn{vSJCbq^v);bj`)XSc-uHt)*nqj z(g@UNKQ1$ROJVZhI0Ih7IQYSq{Om<^WKEA{&IbEjea>#dH$gT<9X7~IIv-d2%AUO6 z^|S5mwhhpT=*-BCcjs|ljVmx#igVn1rn_?wzN5}S`)Td;vCVE$tKE(8SB}$b%9(Y1 z_#zL(W^>O7{*H-Kgb4_#mQc;~KzX^i(p<2oxt*+JUJZ+XO^+2Q{it4?erwoiYFLj^ z)Rp`K2DJ7*wFq2!_Cof`BA2yHfwnh;v?;5|sV7ArSX*SC zxWq>L&)#bB+C)=ARap9#gR{{ z6bD8U2j?3|*6<-i^{>H13jN z#6(JB(Mu;x0}Rt%oN_n%N-2lML5;o?(49Q53i1aK##iGV|A@UDaA07x<2VH!@Y(AG zIs|GD8;P-`YxQoi4e_es@JD|BFV%Go1nQ+1HhSzIW(MLTMlx8VfwvNpfR;udI9-_D z3j7L_XJO!Pyjv3{wT8#J7nXqCA}7{AfF{*%Bhb4vf@BF(Hdk38XT|LayFjU`3d!&y z^OixUkJ2Qfupikd>@}LSW+NrG9I>D1W6Nv$r+Lu0P|EiLgz&@=oebSR;X7vni-)>R zbII+6N@B2T-$sg(VvF9B%*{0a#Ep+|Mf@!8E!U&?GaGl-=BS9hqQ%vkN9CH|^%?0+ zEl&c2y7=yQ{);KeV;E`la7P65kUU-_>vn&JU3IZ^;40-E_ogR9!9*hKdiKjs&hB0X z^2*K|YgeQe(a;=Up#w|{j9Gs_D5eo7JKlXAxF$F4Wm6An*!(n2FcC8-H`kfN2@%cH zvWl)h?oOR9zuZu5F>FRqh|C;!iCfiBz$Tcfwl*WdDS2(`;&RC{tcTy)_1_v5aO3Q)Z!YgNNp#tVqU|ZeE;x0KHb?sQxUX z1+iVyJWZ9_huyxC8@A?#%&`k3Ot9G;#G0IsVroL+s*@Lge({b7&`Av)+seNN z99;Ba#Rq0H2Mgu2@2Ap;P5*C^VJKTX*SRH0qORujyXYf?vjWTQ-CE4+J44w}d`nEL z97A=*m}UX+X~7T<&kv3=2j|`2WEsgXlJtl|zIN*%VCfGki-Pz26!#hXGpxnY2bRyPwODJ8Ja!%S zO*(c;#{{s_5b&(?t&%t$zJRd0?HQJ_jLZAW4fZjdVqv^tFF(gxQTu(-BMk_wy# zI@URfQDi<>UF1~;pU2_h^9#J6E-{}4dWia^uacp)4cC^1^5#Iy!WvwhOaKOi=sQC< z&q;t@$R*(ozU>WT7qMUgUnoy8sEkVbla@JUy$-i6hw1WG*xe<*(zq6G`L#HnP|n~8 zmyBBod9?maQJ2NyaMX?rEF6%++QbCt(9j(X#zY?qghUhV-C^GhI)=I+M*O-8pDR$p zjT;@0`*A12U|n8gRZW@ui&}3~0%lh?fGlo&FCLW8f{Je?oTLaT_bk@3=l$vm=UWj* zM8Xs9>t7Htu1emU#SZ62~CPgX2XsXp#7P-g65=tjXjF52%}1*YYzM-}*^ zOy^d^iwVgcPTU!BJu_=mc)j=@-JaqxWfqn8I9EPQOvj7v$$DW~@F@GzH-%)$WX*JO z&IQEMUXQwbB}P*7;&C>U4SlkUmD9 z(Bm#4n(Z_lHEu&>JfeFG8-92qP8-@WR=0^rasG+|e6j)+a}obiDys^|eLpE<&m@|5 zAkE9*?~WPjj3Rovtg2D!LLq#L_0ekeqrlR-LV44B#WV%Arg0CC0U|fBOlKubdBw3? zRzn|M@J#_J`DqP*QMdELf}yIZ-83#%9IFA6vm`D<*kJ#+pp)VCoYlJ44kW{_6Z_pa zvKG6LSP0;|JmpYfIKBhciW8?=bC;8jrxcn&C>2iJUJSB%gEWBIc*kocZ@89mJA|eq z6bEp1HsyfsPy|;#7R9tK5uQs+B2n5(`JRvjZKwDIBZOhJ8MZy2%6OvHp&dC55LlT~mWy#ru(F8SWFUzzIu z5d{Zk5J)*gf=I>Z#KI97%x2!_Tj23SvZy;7as@s9RY_@WSAX?G6Z#Gvt!UqzHRT9; zdB9=uwZ`BL!!KD;S+*i*Ix+GYwE$>e!)QWX@(!0_w-)(jwF-yx61BJ@sFrnulzb?D z`~-U_B{;vs{7cTSPEtTo7nAs)qCmG_`r(k}$gK2UvTxF&QEKDJk=m$JILf+_#aHE% zlC8C6>_V6I{$_!JQR@nZyAT)Bc^9JTO|8<)I}_`4{+JCi0p&i5QhrgbFAN%$$Qss* z1b8c+b6|A!q|dvE-6nW<-pKLljTXUkHss${;s9&Uav6Po(VeLuxT|f&>|u1cOQXJH zzdU0_ib`e|0v+vhoDjT1mtl?FFl=&7McTq}(X2)FUS_gM>ffs-FVY0T2xaDq^cRq--hUGZG*YdzY~J5-}B8$J7Ci)><$?X0=N zBAVReIx$+)D1Kn4C>)Rm4Xhp{>G_crwfbQ{V1j?;iGG;PH-|pMU+_$q8E9W?py$*j z-F4MGSx^05MJDuC#t_70^7Ck&_Ck;KO`=(*`qKB#5-lZ60OFANQTu zo9W0YC&(GZ*U<`tbu#N$Cq{ZzmgzeQFvcS(O%+Dp3KjG;UvIaEBarNv;C(dZAh}i9 zu2~;xv!lNL@k86`jTF7Qh8U*S!;yw;L9Q8R&?SsFR7JtL4db@0hI~^4Z(B?}0c zHyAzJCO&j@+Sk0e>G7^R|!sO8a#0?D@V_nvf4kjr8PE}Fct zLI*qD{B^d12mbnjoL{cTeXXA9_jh0saA32dvGao95UBkI`;+4)eHJFgh!-80xu6{=JT z^5s}^8@Pz+UJ*x_Cv7crZu64&be1(Qez5g39?W&58Llu?U$u^NG$BetBykaE}ItYEuf;fpG zyD8S4g9GJv1AD5Ai>B0165e9N{=sN0&va8SE8rn_>lzp8csEzU!QixeHL?eeq;4D^ z>PKC*9f*zC$6vF;rH6hmh`PpG?eW?5As7vhi3k3YyEAL}Hz4Bj9{7rl_S)~=y9imA z2&7$^UU|yhV@n)fPvME_+~{-O4vxN*Ts;f)gUO#dcZFZt-b{|Ajqm&KJ#aa zp8KA37+wAb*n6A4)ZO2ys5Lg5o+GJXp21ofU>9EdNLvj^D!}sEXI z{88YK0)G_vqre{p{ue9o;4S*>Q9Aun)r}ol)*lKc7AW|26_s?wg_gAQqKljFGfHIK ziuOP8|2qFy^8cj(NDlvBnE${3uJCYgU|v^EP|K{WUTMt^?`o>$p0s2i%~RS@1C;%o=fq`5&PE#$JVxzLjdky z>HiQ90W2&W3@pq)o*I(=4@1fV3ppQBAOQ4Zh5MCL)6F&|WDv7uKTVGH=|61%=ivXU zzu{Niu?7@jp~qSwMKtghBXJzuSel%Mu$joDVv(-VNjbNqw_wIoq#-9TKwX?<jP zBbAhhA)T1ZM9H^1uuMgGZ|7YAVv^O?_T&wbcO<288|7$}08@6Qg;O{AoX*Umv$E)B zZ?f93_PL1z?^0Ohr<$O&&tp!UWNKQdh>sOeAZnK45Yl492Oh;CGfmwmsLSbSK4gs?<^1b!w zW;&S>3H|K=3jco2`P*}<)v`CTpI5c6*i*e2q@ruEtFbgCL&OvmQaz7<8^c5#7LTkaO^PQ}fPFJ(kf}=b?7bxn zLp*$tgHfYy*T;J|hgjJ@DEB`Jn2(t&Y#Laa78f!iSjjIAdhD_|1T@5-=i{xUEF~3{ z6U-{f_N#5-DQtM-E;sC@0s>?6x!|4(AH65A;}lySGrhX9JxT#_qd^V+hU5yv&xzBB z4YOqy0N9sVD{@xgdC`z-o?@&fe8>?8^_J#v@<%$DaX2p9X)y_oZI!{3{1ks6lC(4W zjJdG6;CVT6QvpV0>6>{x-3_F%)NZ!m31&ooioO<5JfYBZjZ+Dfzz?{%b(mgnPg;`e z#-mnmxs7C}v9GvGz9Z;<0_3Dp&Wh38?%%EI3%j7p-WgcCFU}tN6~C6g7cl!fJPM0D zTY2we1~H7#v<-PtLMxfmTYw4oGtC7hfJg-82;4X37QGzeR{}s|qWCT3vs$bM)&Pr1 z$?+kpXe5yv#9cSlx3%bu&DIsDO-L2fYQ zhtypduZ9QKvo>P20u-6pUt7W+FsTPaSF%sLA4%z{ap-H+8E(i&>5iIeBZdKy!l$LG zdn&j|7_pyyiU#dgvua-Wd)}T?yAt_&Q&|i^(q(a6`;k zI{FSu`oFX#v9t!QjGV6v*w~S*O*WnI)AVYqreB5*j0V6r-1LVVWV6--)5JfnyAmis z$LI@eqa-m-Ef+_|oLhU;y6&@wm6H;fHqjnpEwvWjKOs=*e}54a+_=O{?4+5ud5(q4 zn~2cFj@q=a^uv^H4J>J#BRfIotN&`wspUN*Jz}m1V5q3g^I}NAzktrOL5Yn$4O}b% z%cX~xsL~NMR60u^=%Hc1O(!l~9M(rk?D|4pwX>pqd|4h@!4)47Y%{UANFat-6 zqDF#WTG9q;olEp;nG+H=Aut=3gp{X{sB4z1A|+a-2%}&H6!33EhznDFmN(>%UI|6& zG%GH*Rh{5_OzeAZ8^r%=q+?E}_$a0zb8aWvq9zq;PIE<{A9gO-xliKm7ygxYdW(~C zm-Oyi^Uqvg8~3=`_+qUvH62G_l=h;WFk|71syLx)!}X4}r2!k|-}Hck8ilk_-KSJp zak+&|t$HO_(xxC^p~Vh4_c7EnVCBtxtMzD4UDZz`pOk6q$r@$t37l2_bi1BCvR&|l z&dO0sT_1Kpsss=Z<*;P2X>4`#{#(=OqB*UmP>Tw%$XcPs=`Delg|HWOTRfOAv0MdD zBhkuny(l(3pm0KN#R`DZb3p|+0jSH6w<*OBOX5cY6X0+{c@rSDE9uGuj%wf z30KfC76BA-;_MW2>;!M;0`??n>t}+zRHgs>y#zVHSi1jc@5-CVLp{who!d5+TjLm% z_#I1p<_kSa4{Mwa#z9h!xg`qtR_cv!L!Vm-V$Jn^8_(*Iqa#e}E0?8Io zO2e@b3*y9tw?!{H3mAog!s2*jei+~qimj^M!>q!zWROxmfiV`(tF4o&?e6;KQ!uf* zW>`d=V@^RptdHxW0~tu&<~N{idZ|S1*{WLb9m{8~TCxFm2GcB-Rr5{7!ZmY2I*DD; z78)}#q>>m(^RviEdSMx>iK+yUZc0OnmbiF&p`1`id;B|~vWGF5Es(z6!TWrPr;$Ed znxk&a5SMU1Uejq1&)5vFoEsldrc2w2)I2yG8Ll}>zPmjfcUVt4THXFR9Hl98o0GR- z!aAOlFJx3H`HqN)GM={p9s4Q!rDfLbT&o=m&ro$BcllY2rXQgOb3;wh_uN@G`_y0e z!Jvq+{&p1Q%sTb>=ruDSg3b_cuV%pgck7Z$3#B?Rbt$t|Qkwk>$kE z9}La~vshWx^Nm$bnirgdHY@Z@Kejd`s+)#dN7yWNuA+fa5=!PsO_JK`h#K53@`~?l z&8m2MT2E9=Yo0njU22hOa)j+GA+>imWhK`aEJz(Y!i#ANDn`_EYpXVnzKtTHm}Y2d zuShf27gdNN1pA$X}pN$(~9|7y$1At79JXTMK^qUo##NTvrbKj4^QQ)so->V z%g#5svc>(=Pkb<9>C#0vGd{KbcN@{oP(0`iU|&If?rzq%(z>6mi!=!W_!)8ZEL8SC z1BTyqAk?wq4%epa`!3oBwWFy+JLBMKU*A#k`icA& z^c;~X8TuSrQQS!OneUn_&KR2SCeU;?jtUF37(Y7VE^IhLNuln&%!-xW?(P(r_yja+ zN0AXWb9(O0?H{F-V%{eeXcXNGm7YE$NiY z6^zLpazFQWj+?-;S9(8X$&Jp0*DX*K*G+CkC_g{I@2sP+c_j9lCvg~Au_SfbY_!7M zsVm*147DH_*CebWx1u*etKvy5Md*HA2K1qoTHg@Hikv#mLK#<+$bbmQ^a=Z3Py+Vo zv~<4JwyW`ENtKgGONp?NBau-ai2Qw3g;us{)|iB*I6^|ahN|{?v4Z|bNl#0Q_@^+!XsQH5^vJmIi61FGma-s_Hoq zm9JbYY>0g2C-dz>XndWkz`U|cKo*f@O;yUGaGsR{+%HqXc@E#~C;mGyMipJ64*&jBIfD*2!k>w=E7 zJ9bIGS&s@WS5~hT5#%LayR@Nq(nf#SGx4(%ftuNi@95U?8a`u=K%R zwUs1M{6?d5^ko!ZUE6s@zqo1kTF~$-9A+*6idTXMW0VehL=bbsq?j@0Z>m`L~o|NoW$*98FhP6=#NCEae1R@CJ~XWM@y z|M0$uMW1M}1Dw><2S8 zDr-;9pW+&aw!9|JRJ;ubS`M)O!yf_>1F7ZZovZc^fLSzD1t9P)`@+l6VH4_ zk#3!!2C;$f>uRfQE*tBrJw4wPVLv7&JjF(!+mGZpZ&O1Y54FutBT+`Hd^D_`CShqnu+$)YsGVC--#Xkc7dxZ=|m_E71F~M>& zv6VT%hD)?=)htU{I4$d|Bc><^U}tZzSP6igZ~#xvymbSXlcZ#M;ZgKiGqUErG{*bC zA~nhqp3Y&k=7_a;S9pCHrkn@u^ALl!=(gA>n<$3GPg^^*zChrtxzu0BI!jd^=x!St zBwu5wnUlxFS6BQd=d`4lii_ryBE3KOi_Z!=dBr1>mMfR(_eI7nsG&*69q%0 zMGSkwu_W~av;@%U$*&MwS)+S8PDrAtE724pD473vZ#<$-cO z;3_T6Q8HP-LIXbYYBsZ#f`(jh%x@ZSpeOpIb!#`)N5q+OJao|K?#_NgOFYxIYJRz* zeJ*1Uw%~A}{Ls}Pm|TH*9nwx}RZNJ6)f5G#AQKp=N0%N!t}H7m|&Z1#1wHooLwx= z$$c+1)?L^OzsBPd$abx?#*%B4J6MEVc51whG2-SG*Zfj*i(#m1nAANtcQ}znoMa(@ z#Rlpa^!#^q}i6Kp}wToez+FzIIGZcB~Gd!(v z%@gIu7s8ZRKkFmYm{Hv1JIn;yDnH^CZ3FqGEOV5uo$y2V zaanWN#rT#OW5*1JYOn43$*$hm_Sx%KUN}}AF88P(YIE>KpPA#C8u{NTrd#JeopSDd zA|xfXp=C;=c(=~+(^7loC6866*et=G{v$U&5H*LXJ{vR-9bF%-m>**&NFZ3rV)U5J zr3Chw4PA+{BjD9Q{qcsYLt26)KCSL*wzdf?jpYlbWF?X=rj zb?c3uQ}% z;jaPtBi;O&Fe>$dX12@h^N}y5F2$#3z}flk9cdinzO&(8ad|B?lGOs#J4reHH*-XI zrPTA~<7wW~^(-)ZEJBznVciM7W0{VN3^K%|Bmr9XaS6nBLO4A?IBe1Q9?y^Ii%p@7(8baRf=|#D?R!*^1Aup(S<; zEjPOQCrm7xpqVg7tdg#TVpM9S$rblot|`ggzK@NI_PemFjS9EUbiJ{GxSAxyha(vjJnBl}cMiK;UnybDA7m{a zWYPX^TxcCegjNtHTKwP)x@Lv8^PTfHuHQ_j_{u*0lmk)Lu#=Fsi>%c9z)WynIVlHXR~KI!T`I9 zCvs&(M-fp&ykkaWo}c-Q{w26L)n!hl?cyu`w(s~ftn-KMvQh&M;t%;rK$8;i+w@k> z=l%OXzG`i&PhX}6_}>eY6nlWTy<<57S5?}>hUkn`uzc&hGhua`*;6$Y^ua+!h-14s zb?n)^0}-p@C#qqU{miTR<;QrK$mWeo(@q3Y9rmG4g<0X6)#Uo0D1cb*+iiKfZc4 zvHKFg`MJ?b6%_odOr`Mxo5`_uVXg8vV71c$Ni{&A*go;>C=f$T#3>e~(p^h|fL<3f zeeT(jz4f{lX;j&`mT{j13w0U|)UM)8uO8pSl@)&}Bq<5#Xl%ZlzcEtPjAiCd{GfIG z>(lo-@4oQ)t2dCMf&6%(fTauW@m!wG{Q#I1I*JN%!*Q?F_iRg ze<_a@rTL7fYf6e12yw$zylm4YQiB@@uNm}=G)zcx$=+M79fXKx1wc7G(XD|3M09o+ zdJgPYAhjZmR2vQ>BZjNT7TbsF^0bOLP`HxQ;_~gvlixvAmWzpv9^uW&y-|q@*qb1g z4J+m^O6R*``Y#RRQaUKRLlY7hiTJ6390{(fqKS7`*zDH$$y8ef(O@cJb%kdg?p0@% zk*_1s9EpA#4uv_SjfYfZ{}& zmHKN}SdFALoz3l0i!Wn2y{euGOwF-{p_=m%VuJe z(AvHuHqgFG?c60ayqE%^dQJ?jrz@{H{BvZ(&#O(f=*`1uAphLv#fvwqf>nI0;N5Ct zw>>iMqAl?u1KHY|DwlLq(CX3{iU4PO@ zuR~J*A{7ezJ*Jp<=4_unZDglBBs1|l{0!o>x09=eQGy|!6BN|k-}3+W{^bAv8xHt$ z^hbd|3j9&vj{<)b_@lrd1^y`TM}a>I{88Y4rvgBgffN4v$P6Cr;=2U_zvt-RfCg6S zN{delv<;&VWUajK_M>fW!dId?+F`G0(;{dLQ-C*%VhVJKL?m@DP8mPW#N3X}k%z?R z9XobtUk2{Y&x=>UHi^|X!e*d=ciXCkjivrL_Fl$DuxxuUrA_mVc7ZqrI*M53QWD}v z_8y=+%KoEQd=;Y|JY9+^aIBexpzU4?xq|-Cn^*uH^-53q0~tAjlQqwL7q}%#OgF>k z^%4>U*q%Ak*BijOs%*r?+}oRlw7Fu?o!1Cy)@^`<(Z0$N4=yQeKF-5w>27Zr~q%woWUf$SojA zrU#d#MS6Z|Grs}5VGuw4f&aCq>2;@n-IC^oK-9tgcc~WvnDqfniUtwd%CewA%}H44q@_Caf!b>S?ox_*NE zj#;n6mHfzUY$>6?k|ETKK~Q{|Ly-u{=WzU z@54g)|G&L|VIYJ*G%NxXBIMEk&jJ8ASU4nDSa`^(|0)20W5Ij_DFFBfzYiaiQ^SV! zt9wdF(SRJA9l>6h;!~|5CCApqcO?h^ziI%Wp&K*jL z>o*d=xVo^HV^E}LulgqV9HA?{rpaL;`ERP=zwiR=gR#!EcD~C4;;A8lhz$y%U)EDG zWAKLJJ}Q#CkRkCZ>B1?opFb(0sWnn^@*v@W$;ogO)sm4H9NS z(rupQ(bJd769sOodFrq;Zm~6K`p(Y<%;Ir+PckAAFF=JB(hD z%Hc$B=YjSS`gNo{QGBt_pT{_rx6N~-zpK55z2_DT_XIW)G;tgp?+^9*T)|DN!1`D~ zp;wM!?^t0O`*sZiYv=NRv-bG)K3aMsWHUy}VSK~Ddl_8#bwWCMN3mD+Efas(;y&O1 zLGjl=j9(cd@A=4aNM4S%8`Hm~dB2JbbjC|VtE_9kPu(eE*6-4)QafhHnj?$dPX! zI@enFPnUV7K@lK`i~Fou;c{TCRA}j4st|)C9vtqk(wDwQc6F^qamRD{t56Cz9M*Lc z$348;AVtZiafQ8Wc6H*I+3SuAVk)uXnZ_Q5G4-IC`V3x#$I?z8;^3GB(Knt}9=f^VayI&{X$8td*_z=nbs=MJDUAK7biEiq!rW!oUk#3h zQvX$%?QdOnqc|zKYSlD9{GGCWKeQS$X?gkG ziYpBX=79Q+a87GO&*^y)EPw_QrrXl*a-ztoaar)CmfWdJqPCaM4m(L>!ibyuLY2W= z#v7?O(g<4&-K$GgXA+8EZ3UD{4F!^q8VIGCdx^1+V*Cc=t8&(p7hzK-$}UV>r(TFq zWJY2}@dAB`sB7@WmwACUafeazJcFoQlN6+oRqIH z)TCc5;B$zHIZ11@0{5032!=|T+$d&JzMQ@2TO9X#OQMn2h5Ki{ZSxj&THd~q=E8iL zw=zeL_AJox6(hX0rfC=oA zk=GCq*S;qO(n%!J6r3`Q{bopB9gI^tPcZbawyk8*^L*majC=#^2{O-@A zhh8iCYgaYK*R%cf=)yW~$b?dsgAs0LO8!%tC8X-C-HkmYZ#!xXDl8Y_FV*9^Vr`Y0 zG|}1-<5v!p_S2xAJKh^2uZ!r2dP@oCSu`6q%$)<@pWJ?M27S{z=yOn8XkNU$%0Bj%kUCu;v3Xu|5?wLLV$XN zs`!`YCsrj(z8?N)T*Z}p76=orC7{?8ll5g};L`O~O4kRyX$st`k zrQr)@K`q0Z&W!nl0y@F}^#S$QRS0Se@Er~23-Dm_fzP|d4D^}&gDsR*v6k{K+QUZ zn1`jMrN^_J`c^U-thW(r4OPZ7rGL1w%5z~-3@?qF@IviaRC+4|n~PK%hSjXI>t1#A zcMZ$ayp5_j$r6OdP{LNBfZs$DMs+mStm#xcKebp^I1I>c&1}`NBv$6}Zqk^PS&C3B z4WZM|JoMv}8u1>4(&<*^946k_owyXqCgR2{Z3i=`*kRzP!689Pb@L_N&o`Xqx%fX@ zrPDqnNJUA_wrRJZ$`63X9w;VxDs&lh@0M%rI2mAI4`bQOv3>P-2AUjAa}V!60o@5n z6UBnHU81G+_tXT*etj!1ha%jr?;mMpWptcnr-wbinY=#r(@^(&rUJC zULXQQeoBVlfI2U^2ylY@W}zCLZ0K_IV8a$E4n6FbCB`$%Z#BNMmkORrQ@I zJ;e@J+W@;pzjJ=T&QE=7rz*G2jDb&IkvW)Pt4m~s(p++*qdV=iV_N$DwtR@~qv#fh zO{$T12@$4=q*jESmj6lHRhh0|KU`}+UhdJ5bb@YI$krM9E8oqar=82pr`(Yx*6kEq z(mgGU#tO6Sa0}!4*2&A)%&|nu{TNac5gkbUTT7LPIoySkV&l=G)BQd2^>P_&SBdmF>w42D7}H%rEa9{{no!$^ zA6Q-ug?N{yxHiugj-SlPBMkKd0SYJ3bJt@1AO3dH{KsX0U}wH_B}&9P<*7>dD?x(v zQ5KQZCj};5-ds`Wp6(CLeiy$gEq8t%4<>5TJVQsHUTj5U99q3025G6jOv{LwJwZ zk?+Rcvcx5ZLghmzBdAJKX2x=CsB1Dbz9^3zop*k3*Fd?-wZS(3JI!?{B|k!^m=2r215r{Zl_6UwJm*io^r(w!nZ?vf!`LL2iCV@a36@gAlE^2wX z`YaYW?!1#*qB>w$*Pjv2L?!Jx;u;By(d~CaUOk^wV5`fqn5r{9-AG?CXgq$j)-`Uc zg*fiNBD~pK{UX}o(=g?zX%Xd7wW8*JIR28y0h2gzYu^HG4b;WHsE;y8RFt}XAg1cF zBU1F_8NXj(Q*8(o!)erGMz@H(hg#IJBL_0M#qq~P06MDOknym!bZffeF9WWP;)WCAfa%9&qyjcquP zUqeAn!2CP^Z~dPJ^}pRA|2h1lz#j$vH!JYZs(-egJyM$hJDTtN^CR9ZO1^ z9T@zsksx6lkBvOi*-+(VRDE%2@x%)f37^rz5#3CF0$q^GtIb6rirKXU8{YWx-JEVc zTU(-T!1PQ$&}&-ig?{6=azi3A&>zvVAIXby>FsH!$}=2}S%4|yAuy zIAe+&b4Fka7&u+4sf-6eEnmF5#drWmVPHz!zO2};&ZHqZMMs4)n-Wb8)H+$(%PbfF zYtaQ&=ed62%qtutkZCfF0Cgq4*4yNg3bD<=nRCd>?!`Z>_+J@~XE*kQanVI~(RakF zh~Q%)j?<9){={pB?w90BX6*S+$fJRV&MStY`V}^r<~EJ6IcAVGrpv#WtX#18ewwza z42Gi5pTS<%KeP1B_|D#IZ@bu$=~h2qgQziF{5=tSqO{{s?uZOWTFP-< zyGi{c6F6FGn28B06fu?zF;dI~>Wgg%U97dG+CbmI;lx54g zcjh(C6eMW0Tbg-4ZuB=TNRSY$mlOqSU?if*CSl(13-1~K3@ewQxGH*#a6vXO(O?tn zS;hVhxTv(8Mx;=Q{!2%wa38QIUxGBf`P~~_X**XvKZiyB<#vlj`r)Fn)!H;pySUkm zCcQ0{6BWYmt>$0DI7|#s8EOF{W?yKohfwxyM!nr(SjVY?HgA>1{RlosQXJsuu{hsO%r?QHhI`rz zaFL&6F514C86*GF3nl`WQ4$NpGLD+B*Mc%Gn48FJ+|u=C8EhvVO7`22GbDem*n3U! zI5R8Ts<*Q=?eV^Ewi<7o2nZgS2$UL_O8ee6-w?baIorr{o=52Kj8Pq|RACY&YqV;nlQ@W@LN zUx0_jF5b*;+a-Y&|2S1vSds6!En1muB+Uhk`_pP@k)e_51MGeRUS*LQ}lST0F$iDl3&84qqmJt)%!x zJ$n9ZaYke;nnx&iP*sjo?5iZ(eYX#<(Otg-nhK1@1t!~%laO7I62PA~nnFnTh60LE z`Zk;%RPuME-rHT65-{}(7V-+UGOz?73THDqaV$D^r3+xEmvRh`1pEa#?vH27FD4g0 zSw95#=i+KQ1#lE zhW*T@6vPU1R9tCraPs|xuuoTAJuLF$i|!c4xEV?Hjm@L${e{1Qxt?zF1LQLheHU9r zFFGW{>>JS@nP8x8N5B*#cD(Oq!XX{P3xONyDYRi7+MU~-9UVJIK8QhWr>VaIvh0*k zm&C=QqFrk|ag3LsB}y&}Z|ZJTtdGAm5cP6fAD2`zNB+&0nUB}2rN$fN{U_i6qnHaVN`DpT)s;rAgbw_Mg(JwefA?7XxDO7GtqXfeZ2oU zJ~$hp`x~$gSV$e0wO;Nuu|aE+m5$})-P`4z=tk*f;a*z}I}?HL#lA>yNX~sju>6oT z?&bNVEP~&Av-`Kx_3|=;%mQ+ zg84#I2?YT2F!uOP%yYabmHx!Goy;h?iwsXhn62;4P!Pl1v&r^QM-rsT+Z~XpWsuDp zfLbx}vrCK9Q?g4>VO4j@Qb>XSUg0@GPrKtNT25U4ft_3`ifn7KB%yOS+{{0s z#}`x9c1!ZJ_T4XjGGB?Q98SE!WuDS6wbhO8L}w#V!R4Ud=IdJ{mhh1hu-Gfb6%tGm z=!krY)AMv*VLYl%nBxovOiZ@L^7F~mb#O+HbA6z&iT-6$&-*t3Dev^ch4__c-$zLb zQpljXLc2EonVQN?!i^x&4GqU+Hf~$C;jHJEr}-3Q6LC!br+~1{l|^uxr71V`z&PPk z>Sk5M(_t0*_dEw8c5WfT;>NlStq<>)cY@mI0JuVsc%_w2F|c($+`iLZERQp5&B7|P zg4h*~2aecRqgU!8VDRfGFaNHgZSew?$Q5Q-nn~n6OXuk@ebhGtf3W5$4L3jccoc

lkWcsRtFvT&_eJyhoCnVG=1y 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 KtnBJ@=6?YU-wp`? literal 0 HcmV?d00001 diff --git a/CS/MVCDashboardDesigner/App_Start/DashboardDesigner.cs b/CS/MVCDashboardDesigner/App_Start/DashboardDesigner.cs new file mode 100644 index 0000000..19e972d --- /dev/null +++ b/CS/MVCDashboardDesigner/App_Start/DashboardDesigner.cs @@ -0,0 +1,19 @@ +using System.Web.Routing; +using DevExpress.DashboardWeb; +using DevExpress.DashboardWeb.Mvc; + +public class DashboardDesignerConfig +{ + public static void RegisterService(RouteCollection routes) + { + routes.MapDashboardRoute(); + + // Uncomment this line to save dashboards to the App_Data folder. + //DashboardService.SetDashboardStorage(new DashboardFileStorage(@"~/App_Data/")); + + // Uncomment these lines to create an in-memory storage of dashboard data sources. Use the DataSourceInMemoryStorage.RegisterDataSource + // method to register the existing data source in the created storage. + //var dataSourceStorage = new DataSourceInMemoryStorage(); + //DashboardService.SetDataSourceStorage(dataSourceStorage); + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/App_Start/FilterConfig.cs b/CS/MVCDashboardDesigner/App_Start/FilterConfig.cs new file mode 100644 index 0000000..8f8cd2b --- /dev/null +++ b/CS/MVCDashboardDesigner/App_Start/FilterConfig.cs @@ -0,0 +1,10 @@ +using System.Web; +using System.Web.Mvc; + +namespace MVCDashboardDesigner { + public class FilterConfig { + public static void RegisterGlobalFilters(GlobalFilterCollection filters) { + filters.Add(new HandleErrorAttribute()); + } + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/App_Start/RouteConfig.cs b/CS/MVCDashboardDesigner/App_Start/RouteConfig.cs new file mode 100644 index 0000000..df805ab --- /dev/null +++ b/CS/MVCDashboardDesigner/App_Start/RouteConfig.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; +using DevExpress.DashboardWeb.Mvc; + +namespace MVCDashboardDesigner { + public class RouteConfig { + public static void RegisterRoutes(RouteCollection routes) { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + routes.IgnoreRoute("{resource}.ashx/{*pathInfo}"); + routes.MapDashboardRoute(); + + routes.MapRoute( + name: "Default", // Route name + url: "{controller}/{action}/{id}", // URL with parameters + defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults + ); + } + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/App_Start/WebApiConfig.cs b/CS/MVCDashboardDesigner/App_Start/WebApiConfig.cs new file mode 100644 index 0000000..6e251b4 --- /dev/null +++ b/CS/MVCDashboardDesigner/App_Start/WebApiConfig.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web.Http; + +namespace MVCDashboardDesigner { + public static class WebApiConfig { + public static void Register(HttpConfiguration config) { + config.Routes.MapHttpRoute( + name: "DefaultApi", + routeTemplate: "api/{controller}/{id}", + defaults: new { id = RouteParameter.Optional } + ); + } + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Content/Site.css b/CS/MVCDashboardDesigner/Content/Site.css new file mode 100644 index 0000000..7e4b8ab --- /dev/null +++ b/CS/MVCDashboardDesigner/Content/Site.css @@ -0,0 +1,36 @@ +html, body +{ + background-color: #ffffff; + font: 14px Tahoma, Geneva, sans-serif; + margin: 0; + padding: 0; +} +h1, h2, h3 +{ + font-weight: normal; +} +h1 +{ + font-size: 34px; +} +h2 +{ + font-size: 28px; +} +h3 +{ + font-size: 22px; +} +.content-wrapper +{ + box-sizing: border-box; + margin: 0 auto; + padding: 0 12px; + width: 100%; + max-width: 1024px; +} +.header, +.footer +{ + padding: 12px 0; +} diff --git a/CS/MVCDashboardDesigner/Content/jquery-ui.css b/CS/MVCDashboardDesigner/Content/jquery-ui.css new file mode 100644 index 0000000..5ddf559 --- /dev/null +++ b/CS/MVCDashboardDesigner/Content/jquery-ui.css @@ -0,0 +1,1225 @@ +/*! jQuery UI - v1.11.4 - 2016-03-30 +* http://jqueryui.com +* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ + font-size: 100%; +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + overflow: hidden; + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + position: relative; + margin: 0; + padding: 3px 1em 3px .4em; + cursor: pointer; + min-height: 0; /* support: IE7 */ + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,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"); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + /* Support: IE7 */ + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-button { + display: inline-block; + overflow: hidden; + position: relative; + text-decoration: none; + cursor: pointer; +} +.ui-selectmenu-button span.ui-icon { + right: 0.5em; + left: auto; + margin-top: -8px; + position: absolute; + top: 50%; +} +.ui-selectmenu-button span.ui-selectmenu-text { + text-align: left; + padding: 0.4em 2.1em 0.4em 1em; + display: block; + line-height: 1.4; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertically center icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; + font-weight: bold; +} +.ui-widget-header a { + color: #333333; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #c5c5c5; + background: #f6f6f6; + font-weight: normal; + color: #454545; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #454545; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #cccccc; + background: #ededed; + font-weight: normal; + color: #2b2b2b; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited { + color: #2b2b2b; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #003eff; + background: #007fff; + font-weight: normal; + color: #ffffff; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #ffffff; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #777620; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #5f3f3f; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #5f3f3f; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-state-default .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cc0000_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + margin: 0px 0 0 0px; + padding: 5px; + background: #666666; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ + border-radius: 8px; +} diff --git a/CS/MVCDashboardDesigner/Content/jquery-ui.min.css b/CS/MVCDashboardDesigner/Content/jquery-ui.min.css new file mode 100644 index 0000000..8446f46 --- /dev/null +++ b/CS/MVCDashboardDesigner/Content/jquery-ui.min.css @@ -0,0 +1,7 @@ +/*! jQuery UI - v1.11.4 - 2016-03-30 +* http://jqueryui.com +* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Controllers/HomeController.cs b/CS/MVCDashboardDesigner/Controllers/HomeController.cs new file mode 100644 index 0000000..5ed66b9 --- /dev/null +++ b/CS/MVCDashboardDesigner/Controllers/HomeController.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace MVCDashboardDesigner.Controllers +{ + public class HomeController : Controller + { + public ActionResult Index() + { + ViewBag.Message = "Welcome to DevExpress Extensions for ASP.NET MVC!"; + + return View(); + } + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/DataBaseEditaleDashboardStorage.cs b/CS/MVCDashboardDesigner/DataBaseEditaleDashboardStorage.cs new file mode 100644 index 0000000..45f4d06 --- /dev/null +++ b/CS/MVCDashboardDesigner/DataBaseEditaleDashboardStorage.cs @@ -0,0 +1,108 @@ +using DevExpress.DashboardWeb; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +namespace MVCDashboardDesigner +{ + public class DataBaseEditaleDashboardStorage : IEditableDashboardStorage + { + + string connectionString; + + public DataBaseEditaleDashboardStorage(string connectionString) + : base() + { + this.connectionString = connectionString; + } + + string IEditableDashboardStorage.AddDashboard(XDocument document, string dashboardName) + { + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + MemoryStream stream = new MemoryStream(); + document.Save(stream); + stream.Position = 0; + + SqlCommand InsertCommand = new SqlCommand( + "INSERT INTO Dashboards (Dashboard, Caption) " + + "output INSERTED.ID " + + "VALUES (@Dashboard, @Caption)"); + InsertCommand.Parameters.Add("Caption", SqlDbType.NVarChar).Value = dashboardName; + InsertCommand.Parameters.Add("Dashboard", SqlDbType.VarBinary).Value = stream.ToArray(); + InsertCommand.Connection = connection; + string ID = InsertCommand.ExecuteScalar().ToString(); + connection.Close(); + return ID; + } + } + + + XDocument IDashboardStorage.LoadDashboard(string dashboardID) + { + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + SqlCommand GetCommand = new SqlCommand("SELECT Dashboard FROM Dashboards WHERE ID=@ID"); + GetCommand.Parameters.Add("ID", SqlDbType.Int).Value = Convert.ToInt32(dashboardID); + GetCommand.Connection = connection; + SqlDataReader reader = GetCommand.ExecuteReader(); + reader.Read(); + byte[] data = reader.GetValue(0) as byte[]; + MemoryStream stream = new MemoryStream(data); + connection.Close(); + return XDocument.Load(stream); + } + } + + IEnumerable IDashboardStorage.GetAvailableDashboardsInfo() + { + + List list = new List(); + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + SqlCommand GetCommand = new SqlCommand("SELECT ID, Caption FROM Dashboards"); + GetCommand.Connection = connection; + SqlDataReader reader = GetCommand.ExecuteReader(); + while (reader.Read()) + { + string ID = reader.GetInt32(0).ToString(); + string Caption = reader.GetString(1); + list.Add(new DashboardInfo() { ID = ID, Name = Caption }); + } + connection.Close(); + } + return list; + } + + void IDashboardStorage.SaveDashboard(string dashboardID, XDocument document) + { + using (SqlConnection connection = new SqlConnection(connectionString)) + { + connection.Open(); + MemoryStream stream = new MemoryStream(); + document.Save(stream); + stream.Position = 0; + + SqlCommand InsertCommand = new SqlCommand( + "UPDATE Dashboards Set Dashboard = @Dashboard " + + "WHERE ID = @ID"); + InsertCommand.Parameters.Add("ID", SqlDbType.Int).Value = Convert.ToInt32(dashboardID); + InsertCommand.Parameters.Add("Dashboard", SqlDbType.VarBinary).Value = stream.ToArray(); + InsertCommand.Connection = connection; + InsertCommand.ExecuteNonQuery(); + + connection.Close(); + } + + } + + } +} diff --git a/CS/MVCDashboardDesigner/Global.asax b/CS/MVCDashboardDesigner/Global.asax new file mode 100644 index 0000000..caa6040 --- /dev/null +++ b/CS/MVCDashboardDesigner/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="MVCDashboardDesigner.MvcApplication" Language="C#" %> \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Global.asax.cs b/CS/MVCDashboardDesigner/Global.asax.cs new file mode 100644 index 0000000..8c1ac16 --- /dev/null +++ b/CS/MVCDashboardDesigner/Global.asax.cs @@ -0,0 +1,68 @@ +using DevExpress.DashboardCommon; +using DevExpress.DashboardWeb; +using DevExpress.DashboardCommon.Native.DashboardRestfulService; +using DevExpress.DataAccess.ConnectionParameters; +using DevExpress.DataAccess.Sql; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Web; +using System.Web.Http; +using System.Web.Mvc; +using System.Web.Routing; +using System.Web.Hosting; + +namespace MVCDashboardDesigner +{ + // Note: For instructions on enabling IIS6 or IIS7 classic mode, + // visit http://go.microsoft.com/?LinkId=9394801 + + public class MvcApplication : System.Web.HttpApplication + { + protected void Application_Start() + { + DashboardDesignerConfig.RegisterService(RouteTable.Routes); + AreaRegistration.RegisterAllAreas(); + + WebApiConfig.Register(GlobalConfiguration.Configuration); + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + RouteConfig.RegisterRoutes(RouteTable.Routes); + + ModelBinders.Binders.DefaultBinder = new DevExpress.Web.Mvc.DevExpressEditorsBinder(); + + DevExpress.Web.ASPxWebControl.CallbackError += Application_Error; + + DataBaseEditaleDashboardStorage dataBaseDashboardStorage = new DataBaseEditaleDashboardStorage(MVCDashboardDesigner.Properties.Settings.Default.DashboardStorageConnection); + + DashboardService.SetDashboardStorage(dataBaseDashboardStorage); + + DashboardSqlDataSource sqlDataSource = new DashboardSqlDataSource("SQL Data Source"); + TableQuery customerReportsQuery = new TableQuery("CustomerReports"); + customerReportsQuery.AddTable("CustomerReports").SelectColumns("CompanyName", "ProductName", "OrderDate", "ProductAmount"); + sqlDataSource.Queries.Add(customerReportsQuery); + + DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage(); + dataSourceStorage.RegisterDataSource("sqlDataSource1", sqlDataSource.SaveToXml()); + DashboardService.SetDataSourceStorage(dataSourceStorage); + DashboardService.DataApi.ConfigureDataConnection += DataApi_ConfigureDataConnection; + + } + void DataApi_ConfigureDataConnection(object sender, ServiceConfigureDataConnectionEventArgs e) + { + if (e.DataSourceName == "SQL Data Source") + { + Access97ConnectionParameters accessParams = new Access97ConnectionParameters(); + accessParams.FileName = HostingEnvironment.MapPath("~/App_Data/nwind.mdb"); + e.ConnectionParameters = accessParams; + } + } + + + protected void Application_Error(object sender, EventArgs e) + { + Exception exception = System.Web.HttpContext.Current.Server.GetLastError(); + //TODO: Handle Exception + } + } +} \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/MVCDashboardDesigner.csproj b/CS/MVCDashboardDesigner/MVCDashboardDesigner.csproj new file mode 100644 index 0000000..4ee0f07 --- /dev/null +++ b/CS/MVCDashboardDesigner/MVCDashboardDesigner.csproj @@ -0,0 +1,244 @@ + + + + + Debug + AnyCPU + + 2.0 + {CC272148-F54B-41CF-8F78-5B6A63147F84} + {E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + MVCDashboardDesigner + MVCDashboardDesigner + v4.5 + false + + 4.0 + true + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + + + + + + ..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll + True + + + + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + True + + + ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll + True + + + + + + + + ..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll + True + + + + + + + + + + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll + True + + + ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll + True + + + ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll + True + + + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll + True + + + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll + True + + + ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll + True + + + + + + + + + + + + + + + + + + + ..\packages\Microsoft.AspNet.WebPages.Data.2.0.20710.0\lib\net40\WebMatrix.Data.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + + + + + + + + + + + + + + Web.config + + + Web.config + + + + + + + + + + + Global.asax + + + + True + True + Settings.settings + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + + True + True + 56591 + / + http://localhost:50911/ + False + False + + False + + + + + \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Properties/AssemblyInfo.cs b/CS/MVCDashboardDesigner/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6723a82 --- /dev/null +++ b/CS/MVCDashboardDesigner/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MVCDashboardDesigner")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MVCDashboardDesigner")] +[assembly: AssemblyCopyright("Copyright ? 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("33ba400c-5aa2-48ac-aa60-3c83371b100d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Properties/Settings.Designer.cs b/CS/MVCDashboardDesigner/Properties/Settings.Designer.cs new file mode 100644 index 0000000..6b78bc8 --- /dev/null +++ b/CS/MVCDashboardDesigner/Properties/Settings.Designer.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MVCDashboardDesigner.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=localhost\\mssqlserver2008;Initial Catalog=T386418;Integrated Security" + + "=True")] + public string DashboardStorageConnection { + get { + return ((string)(this["DashboardStorageConnection"])); + } + } + } +} diff --git a/CS/MVCDashboardDesigner/Properties/Settings.settings b/CS/MVCDashboardDesigner/Properties/Settings.settings new file mode 100644 index 0000000..b9bedae --- /dev/null +++ b/CS/MVCDashboardDesigner/Properties/Settings.settings @@ -0,0 +1,14 @@ + + + + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ConnectionString>Data Source=localhost\mssqlserver2008;Initial Catalog=T386418;Integrated Security=True</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=localhost\mssqlserver2008;Initial Catalog=T386418;Integrated Security=True + + + \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Scripts/AjaxLogin.js b/CS/MVCDashboardDesigner/Scripts/AjaxLogin.js new file mode 100644 index 0000000..d1dec5a --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/AjaxLogin.js @@ -0,0 +1,110 @@ +$(function () { + // Cache for dialogs + var dialogs = {}; + + var getValidationSummaryErrors = function ($form) { + // We verify if we created it beforehand + var errorSummary = $form.find('.validation-summary-errors, .validation-summary-valid'); + if (!errorSummary.length) { + errorSummary = $('

') + .prependTo($form); + } + + return errorSummary; + }; + + var displayErrors = function (form, errors) { + var errorSummary = getValidationSummaryErrors(form) + .removeClass('validation-summary-valid') + .addClass('validation-summary-errors'); + + var items = $.map(errors, function (error) { + return '
  • ' + error + '
  • '; + }).join(''); + + var ul = errorSummary + .find('ul') + .empty() + .append(items); + }; + + var resetForm = function ($form) { + // We reset the form so we make sure unobtrusive errors get cleared out. + $form[0].reset(); + + getValidationSummaryErrors($form) + .removeClass('validation-summary-errors') + .addClass('validation-summary-valid') + }; + + var formSubmitHandler = function (e) { + var $form = $(this); + + // We check if jQuery.validator exists on the form + if (!$form.valid || $form.valid()) { + $.post($form.attr('action'), $form.serializeArray()) + .done(function (json) { + json = json || {}; + + // In case of success, we redirect to the provided URL or the same page. + if (json.success) { + location = json.redirect || location.href; + } else if (json.errors) { + displayErrors($form, json.errors); + } + }) + .error(function () { + displayErrors($form, ['An unknown error happened.']); + }); + } + + // Prevent the normal behavior since we opened the dialog + e.preventDefault(); + }; + + var loadAndShowDialog = function (id, link, url) { + var separator = url.indexOf('?') >= 0 ? '&' : '?'; + + // Save an empty jQuery in our cache for now. + dialogs[id] = $(); + + // Load the dialog with the content=1 QueryString in order to get a PartialView + $.get(url + separator + 'content=1') + .done(function (content) { + dialogs[id] = $('') + .hide() // Hide the dialog for now so we prevent flicker + .appendTo(document.body) + .filter('div') // Filter for the div tag only, script tags could surface + .dialog({ // Create the jQuery UI dialog + title: link.data('dialog-title'), + modal: true, + resizable: true, + draggable: true, + width: link.data('dialog-width') || 600, + beforeClose: function () { resetForm($(this).find('form')); } + }) + .find('form') // Attach logic on forms + .submit(formSubmitHandler) + .end(); + }); + }; + + // List of link ids to have an ajax dialog + var links = ['#loginLink', '#registerLink']; + + $.each(links, function (i, id) { + $(id).click(function (e) { + var link = $(this), + url = link.attr('href'); + + if (!dialogs[id]) { + loadAndShowDialog(id, link, url); + } else { + dialogs[id].dialog('open'); + } + + // Prevent the normal behavior since we use a dialog + e.preventDefault(); + }); + }); +}); \ No newline at end of file diff --git a/CS/MVCDashboardDesigner/Scripts/cldr.event.js b/CS/MVCDashboardDesigner/Scripts/cldr.event.js new file mode 100644 index 0000000..ee36d35 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/cldr.event.js @@ -0,0 +1,585 @@ +/** + * CLDR JavaScript Library v0.4.3 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-08-24T01:00Z + */ +/*! + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var pathNormalize = Cldr._pathNormalize, + validatePresence = Cldr._validatePresence, + validateType = Cldr._validateType; + +/*! + * EventEmitter v4.2.7 - git.io/ee + * Oliver Caldwell + * MIT license + * @preserve + */ + +var EventEmitter; +/* jshint ignore:start */ +EventEmitter = (function () { + + + /** + * Class for managing events. + * Can be extended to provide event functionality in other classes. + * + * @class EventEmitter Manages event registering and emitting. + */ + function EventEmitter() {} + + // Shortcuts to improve speed and size + var proto = EventEmitter.prototype; + var exports = this; + var originalGlobalValue = exports.EventEmitter; + + /** + * Finds the index of the listener for the event in it's storage array. + * + * @param {Function[]} listeners Array of listeners to search through. + * @param {Function} listener Method to look for. + * @return {Number} Index of the specified listener, -1 if not found + * @api private + */ + function indexOfListener(listeners, listener) { + var i = listeners.length; + while (i--) { + if (listeners[i].listener === listener) { + return i; + } + } + + return -1; + } + + /** + * Alias a method while keeping the context correct, to allow for overwriting of target method. + * + * @param {String} name The name of the target method. + * @return {Function} The aliased method + * @api private + */ + function alias(name) { + return function aliasClosure() { + return this[name].apply(this, arguments); + }; + } + + /** + * Returns the listener array for the specified event. + * Will initialise the event object and listener arrays if required. + * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them. + * Each property in the object response is an array of listener functions. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Function[]|Object} All listener functions for the event. + */ + proto.getListeners = function getListeners(evt) { + var events = this._getEvents(); + var response; + var key; + + // Return a concatenated array of all matching events if + // the selector is a regular expression. + if (evt instanceof RegExp) { + response = {}; + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + response[key] = events[key]; + } + } + } + else { + response = events[evt] || (events[evt] = []); + } + + return response; + }; + + /** + * Takes a list of listener objects and flattens it into a list of listener functions. + * + * @param {Object[]} listeners Raw listener objects. + * @return {Function[]} Just the listener functions. + */ + proto.flattenListeners = function flattenListeners(listeners) { + var flatListeners = []; + var i; + + for (i = 0; i < listeners.length; i += 1) { + flatListeners.push(listeners[i].listener); + } + + return flatListeners; + }; + + /** + * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful. + * + * @param {String|RegExp} evt Name of the event to return the listeners from. + * @return {Object} All listener functions for an event in an object. + */ + proto.getListenersAsObject = function getListenersAsObject(evt) { + var listeners = this.getListeners(evt); + var response; + + if (listeners instanceof Array) { + response = {}; + response[evt] = listeners; + } + + return response || listeners; + }; + + /** + * Adds a listener function to the specified event. + * The listener will not be added if it is a duplicate. + * If the listener returns true then it will be removed after it is called. + * If you pass a regular expression as the event name then the listener will be added to all events that match it. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListener = function addListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var listenerIsWrapped = typeof listener === 'object'; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) { + listeners[key].push(listenerIsWrapped ? listener : { + listener: listener, + once: false + }); + } + } + + return this; + }; + + /** + * Alias of addListener + */ + proto.on = alias('addListener'); + + /** + * Semi-alias of addListener. It will add a listener that will be + * automatically removed after it's first execution. + * + * @param {String|RegExp} evt Name of the event to attach the listener to. + * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addOnceListener = function addOnceListener(evt, listener) { + return this.addListener(evt, { + listener: listener, + once: true + }); + }; + + /** + * Alias of addOnceListener. + */ + proto.once = alias('addOnceListener'); + + /** + * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad. + * You need to tell it what event names should be matched by a regex. + * + * @param {String} evt Name of the event to create. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvent = function defineEvent(evt) { + this.getListeners(evt); + return this; + }; + + /** + * Uses defineEvent to define multiple events. + * + * @param {String[]} evts An array of event names to define. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.defineEvents = function defineEvents(evts) { + for (var i = 0; i < evts.length; i += 1) { + this.defineEvent(evts[i]); + } + return this; + }; + + /** + * Removes a listener function from the specified event. + * When passed a regular expression as the event name, it will remove the listener from all events that match it. + * + * @param {String|RegExp} evt Name of the event to remove the listener from. + * @param {Function} listener Method to remove from the event. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListener = function removeListener(evt, listener) { + var listeners = this.getListenersAsObject(evt); + var index; + var key; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + index = indexOfListener(listeners[key], listener); + + if (index !== -1) { + listeners[key].splice(index, 1); + } + } + } + + return this; + }; + + /** + * Alias of removeListener + */ + proto.off = alias('removeListener'); + + /** + * Adds listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added. + * You can also pass it a regular expression to add the array of listeners to all events that match it. + * Yeah, this function does quite a bit. That's probably a bad thing. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.addListeners = function addListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(false, evt, listeners); + }; + + /** + * Removes listeners in bulk using the manipulateListeners method. + * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be removed. + * You can also pass it a regular expression to remove the listeners from all events that match it. + * + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeListeners = function removeListeners(evt, listeners) { + // Pass through to manipulateListeners + return this.manipulateListeners(true, evt, listeners); + }; + + /** + * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level. + * The first argument will determine if the listeners are removed (true) or added (false). + * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. + * You can also pass it an event name and an array of listeners to be added/removed. + * You can also pass it a regular expression to manipulate the listeners of all events that match it. + * + * @param {Boolean} remove True if you want to remove listeners, false if you want to add. + * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once. + * @param {Function[]} [listeners] An optional array of listener functions to add/remove. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) { + var i; + var value; + var single = remove ? this.removeListener : this.addListener; + var multiple = remove ? this.removeListeners : this.addListeners; + + // If evt is an object then pass each of it's properties to this method + if (typeof evt === 'object' && !(evt instanceof RegExp)) { + for (i in evt) { + if (evt.hasOwnProperty(i) && (value = evt[i])) { + // Pass the single listener straight through to the singular method + if (typeof value === 'function') { + single.call(this, i, value); + } + else { + // Otherwise pass back to the multiple function + multiple.call(this, i, value); + } + } + } + } + else { + // So evt must be a string + // And listeners must be an array of listeners + // Loop over it and pass each one to the multiple method + i = listeners.length; + while (i--) { + single.call(this, evt, listeners[i]); + } + } + + return this; + }; + + /** + * Removes all listeners from a specified event. + * If you do not specify an event then all listeners will be removed. + * That means every event will be emptied. + * You can also pass a regex to remove all events that match it. + * + * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.removeEvent = function removeEvent(evt) { + var type = typeof evt; + var events = this._getEvents(); + var key; + + // Remove different things depending on the state of evt + if (type === 'string') { + // Remove all listeners for the specified event + delete events[evt]; + } + else if (evt instanceof RegExp) { + // Remove all events matching the regex. + for (key in events) { + if (events.hasOwnProperty(key) && evt.test(key)) { + delete events[key]; + } + } + } + else { + // Remove all listeners in all events + delete this._events; + } + + return this; + }; + + /** + * Alias of removeEvent. + * + * Added to mirror the node API. + */ + proto.removeAllListeners = alias('removeEvent'); + + /** + * Emits an event of your choice. + * When emitted, every listener attached to that event will be executed. + * If you pass the optional argument array then those arguments will be passed to every listener upon execution. + * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately. + * So they will not arrive within the array on the other side, they will be separate. + * You can also pass a regular expression to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {Array} [args] Optional array of arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emitEvent = function emitEvent(evt, args) { + var listeners = this.getListenersAsObject(evt); + var listener; + var i; + var key; + var response; + + for (key in listeners) { + if (listeners.hasOwnProperty(key)) { + i = listeners[key].length; + + while (i--) { + // If the listener returns true then it shall be removed from the event + // The function is executed either with a basic call or an apply if there is an args array + listener = listeners[key][i]; + + if (listener.once === true) { + this.removeListener(evt, listener.listener); + } + + response = listener.listener.apply(this, args || []); + + if (response === this._getOnceReturnValue()) { + this.removeListener(evt, listener.listener); + } + } + } + } + + return this; + }; + + /** + * Alias of emitEvent + */ + proto.trigger = alias('emitEvent'); + + /** + * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on. + * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it. + * + * @param {String|RegExp} evt Name of the event to emit and execute listeners for. + * @param {...*} Optional additional arguments to be passed to each listener. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.emit = function emit(evt) { + var args = Array.prototype.slice.call(arguments, 1); + return this.emitEvent(evt, args); + }; + + /** + * Sets the current value to check against when executing listeners. If a + * listeners return value matches the one set here then it will be removed + * after execution. This value defaults to true. + * + * @param {*} value The new value to check for when executing listeners. + * @return {Object} Current instance of EventEmitter for chaining. + */ + proto.setOnceReturnValue = function setOnceReturnValue(value) { + this._onceReturnValue = value; + return this; + }; + + /** + * Fetches the current value to check against when executing listeners. If + * the listeners return value matches this one then it should be removed + * automatically. It will return true by default. + * + * @return {*|Boolean} The current value to check for or the default, true. + * @api private + */ + proto._getOnceReturnValue = function _getOnceReturnValue() { + if (this.hasOwnProperty('_onceReturnValue')) { + return this._onceReturnValue; + } + else { + return true; + } + }; + + /** + * Fetches the events object and creates one if required. + * + * @return {Object} The events storage object. + * @api private + */ + proto._getEvents = function _getEvents() { + return this._events || (this._events = {}); + }; + + /** + * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version. + * + * @return {Function} Non conflicting EventEmitter class. + */ + EventEmitter.noConflict = function noConflict() { + exports.EventEmitter = originalGlobalValue; + return EventEmitter; + }; + + return EventEmitter; +}()); +/* jshint ignore:end */ + + + + var validateTypeFunction = function( value, name ) { + validateType( value, name, typeof value === "undefined" || typeof value === "function", "Function" ); + }; + + + + + var superGet, superInit, + globalEe = new EventEmitter(); + + function validateTypeEvent( value, name ) { + validateType( value, name, typeof value === "string" || value instanceof RegExp, "String or RegExp" ); + } + + function validateThenCall( method, self ) { + return function( event, listener ) { + validatePresence( event, "event" ); + validateTypeEvent( event, "event" ); + + validatePresence( listener, "listener" ); + validateTypeFunction( listener, "listener" ); + + return self[ method ].apply( self, arguments ); + }; + } + + function off( self ) { + return validateThenCall( "off", self ); + } + + function on( self ) { + return validateThenCall( "on", self ); + } + + function once( self ) { + return validateThenCall( "once", self ); + } + + Cldr.off = off( globalEe ); + Cldr.on = on( globalEe ); + Cldr.once = once( globalEe ); + + /** + * Overload Cldr.prototype.init(). + */ + superInit = Cldr.prototype.init; + Cldr.prototype.init = function() { + var ee; + this.ee = ee = new EventEmitter(); + this.off = off( ee ); + this.on = on( ee ); + this.once = once( ee ); + superInit.apply( this, arguments ); + }; + + /** + * getOverload is encapsulated, because of cldr/unresolved. If it's loaded + * after cldr/event (and note it overwrites .get), it can trigger this + * overload again. + */ + function getOverload() { + + /** + * Overload Cldr.prototype.get(). + */ + superGet = Cldr.prototype.get; + Cldr.prototype.get = function( path ) { + var value = superGet.apply( this, arguments ); + path = pathNormalize( path, this.attributes ).join( "/" ); + globalEe.trigger( "get", [ path, value ] ); + this.ee.trigger( "get", [ path, value ] ); + return value; + }; + } + + Cldr._eventInit = getOverload; + getOverload(); + + return Cldr; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/cldr.js b/CS/MVCDashboardDesigner/Scripts/cldr.js new file mode 100644 index 0000000..23b6c96 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/cldr.js @@ -0,0 +1,662 @@ +/** + * CLDR JavaScript Library v0.4.3 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-08-24T01:00Z + */ +/*! + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( root, factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory(); + } else { + // Global + root.Cldr = factory(); + } + +}( this, function() { + + + var arrayIsArray = Array.isArray || function( obj ) { + return Object.prototype.toString.call( obj ) === "[object Array]"; + }; + + + + + var pathNormalize = function( path, attributes ) { + if ( arrayIsArray( path ) ) { + path = path.join( "/" ); + } + if ( typeof path !== "string" ) { + throw new Error( "invalid path \"" + path + "\"" ); + } + // 1: Ignore leading slash `/` + // 2: Ignore leading `cldr/` + path = path + .replace( /^\// , "" ) /* 1 */ + .replace( /^cldr\// , "" ); /* 2 */ + + // Replace {attribute}'s + path = path.replace( /{[a-zA-Z]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return attributes[ name ]; + }); + + return path.split( "/" ); + }; + + + + + var arraySome = function( array, callback ) { + var i, length; + if ( array.some ) { + return array.some( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + if ( callback( array[ i ], i, array ) ) { + return true; + } + } + return false; + }; + + + + + /** + * Return the maximized language id as defined in + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. Canonicalize. + * 1.1 Make sure the input locale is in canonical form: uses the right + * separator, and has the right casing. + * TODO Right casing? What df? It seems languages are lowercase, scripts are + * Capitalized, territory is uppercase. I am leaving this as an exercise to + * the user. + * + * 1.2 Replace any deprecated subtags with their canonical values using the + * data in supplemental metadata. Use the first value in the + * replacement list, if it exists. Language tag replacements may have multiple + * parts, such as "sh" ➞ "sr_Latn" or mo" ➞ "ro_MD". In such a case, the + * original script and/or region are retained if there is one. Thus + * "sh_Arab_AQ" ➞ "sr_Arab_AQ", not "sr_Latn_AQ". + * TODO What data? + * + * 1.3 If the tag is grandfathered (see in the supplemental data), then return it. + * TODO grandfathered? + * + * 1.4 Remove the script code 'Zzzz' and the region code 'ZZ' if they occur. + * 1.5 Get the components of the cleaned-up source tag (languages, scripts, + * and regions), plus any variants and extensions. + * 2. Lookup. Lookup each of the following in order, and stop on the first + * match: + * 2.1 languages_scripts_regions + * 2.2 languages_regions + * 2.3 languages_scripts + * 2.4 languages + * 2.5 und_scripts + * 3. Return + * 3.1 If there is no match, either return an error value, or the match for + * "und" (in APIs where a valid language tag is required). + * 3.2 Otherwise there is a match = languagem_scriptm_regionm + * 3.3 Let xr = xs if xs is not empty, and xm otherwise. + * 3.4 Return the language tag composed of languager _ scriptr _ regionr + + * variants + extensions. + * + * @subtags [Array] normalized language id subtags tuple (see init.js). + */ + var coreLikelySubtags = function( Cldr, cldr, subtags, options ) { + var match, matchFound, + language = subtags[ 0 ], + script = subtags[ 1 ], + sep = Cldr.localeSep, + territory = subtags[ 2 ]; + options = options || {}; + + // Skip if (language, script, territory) is not empty [3.3] + if ( language !== "und" && script !== "Zzzz" && territory !== "ZZ" ) { + return [ language, script, territory ]; + } + + // Skip if no supplemental likelySubtags data is present + if ( typeof cldr.get( "supplemental/likelySubtags" ) === "undefined" ) { + return; + } + + // [2] + matchFound = arraySome([ + [ language, script, territory ], + [ language, territory ], + [ language, script ], + [ language ], + [ "und", script ] + ], function( test ) { + return match = !(/\b(Zzzz|ZZ)\b/).test( test.join( sep ) ) /* [1.4] */ && cldr.get( [ "supplemental/likelySubtags", test.join( sep ) ] ); + }); + + // [3] + if ( matchFound ) { + // [3.2 .. 3.4] + match = match.split( sep ); + return [ + language !== "und" ? language : match[ 0 ], + script !== "Zzzz" ? script : match[ 1 ], + territory !== "ZZ" ? territory : match[ 2 ] + ]; + } else if ( options.force ) { + // [3.1.2] + return cldr.get( "supplemental/likelySubtags/und" ).split( sep ); + } else { + // [3.1.1] + return; + } + }; + + + + /** + * Given a locale, remove any fields that Add Likely Subtags would add. + * http://www.unicode.org/reports/tr35/#Likely_Subtags + * 1. First get max = AddLikelySubtags(inputLocale). If an error is signaled, + * return it. + * 2. Remove the variants from max. + * 3. Then for trial in {language, language _ region, language _ script}. If + * AddLikelySubtags(trial) = max, then return trial + variants. + * 4. If you do not get a match, return max + variants. + * + * @maxLanguageId [Array] maxLanguageId tuple (see init.js). + */ + var coreRemoveLikelySubtags = function( Cldr, cldr, maxLanguageId ) { + var match, matchFound, + language = maxLanguageId[ 0 ], + script = maxLanguageId[ 1 ], + territory = maxLanguageId[ 2 ]; + + // [3] + matchFound = arraySome([ + [ [ language, "Zzzz", "ZZ" ], [ language ] ], + [ [ language, "Zzzz", territory ], [ language, territory ] ], + [ [ language, script, "ZZ" ], [ language, script ] ] + ], function( test ) { + var result = coreLikelySubtags( Cldr, cldr, test[ 0 ] ); + match = test[ 1 ]; + return result && result[ 0 ] === maxLanguageId[ 0 ] && + result[ 1 ] === maxLanguageId[ 1 ] && + result[ 2 ] === maxLanguageId[ 2 ]; + }); + + // [4] + return matchFound ? match : maxLanguageId; + }; + + + + + /** + * subtags( locale ) + * + * @locale [String] + */ + var coreSubtags = function( locale ) { + var aux, unicodeLanguageId, + subtags = []; + + locale = locale.replace( /_/, "-" ); + + // Unicode locale extensions. + aux = locale.split( "-u-" ); + if ( aux[ 1 ] ) { + aux[ 1 ] = aux[ 1 ].split( "-t-" ); + locale = aux[ 0 ] + ( aux[ 1 ][ 1 ] ? "-t-" + aux[ 1 ][ 1 ] : ""); + subtags[ 4 /* unicodeLocaleExtensions */ ] = aux[ 1 ][ 0 ]; + } + + // TODO normalize transformed extensions. Currently, skipped. + // subtags[ x ] = locale.split( "-t-" )[ 1 ]; + unicodeLanguageId = locale.split( "-t-" )[ 0 ]; + + // unicode_language_id = "root" + // | unicode_language_subtag + // (sep unicode_script_subtag)? + // (sep unicode_region_subtag)? + // (sep unicode_variant_subtag)* ; + // + // Although unicode_language_subtag = alpha{2,8}, I'm using alpha{2,3}. Because, there's no language on CLDR lengthier than 3. + aux = unicodeLanguageId.match( /^(([a-z]{2,3})(-([A-Z][a-z]{3}))?(-([A-Z]{2}|[0-9]{3}))?)(-[a-zA-Z0-9]{5,8}|[0-9][a-zA-Z0-9]{3})*$|^(root)$/ ); + if ( aux === null ) { + return [ "und", "Zzzz", "ZZ" ]; + } + subtags[ 0 /* language */ ] = aux[ 9 ] /* root */ || aux[ 2 ] || "und"; + subtags[ 1 /* script */ ] = aux[ 4 ] || "Zzzz"; + subtags[ 2 /* territory */ ] = aux[ 6 ] || "ZZ"; + subtags[ 3 /* variant */ ] = aux[ 7 ]; + + // 0: language + // 1: script + // 2: territory (aka region) + // 3: variant + // 4: unicodeLocaleExtensions + return subtags; + }; + + + + + var arrayForEach = function( array, callback ) { + var i, length; + if ( array.forEach ) { + return array.forEach( callback ); + } + for ( i = 0, length = array.length; i < length; i++ ) { + callback( array[ i ], i, array ); + } + }; + + + + + /** + * bundleLookup( minLanguageId ) + * + * @Cldr [Cldr class] + * + * @cldr [Cldr instance] + * + * @minLanguageId [String] requested languageId after applied remove likely subtags. + */ + var bundleLookup = function( Cldr, cldr, minLanguageId ) { + var availableBundleMap = Cldr._availableBundleMap, + availableBundleMapQueue = Cldr._availableBundleMapQueue; + + if ( availableBundleMapQueue.length ) { + arrayForEach( availableBundleMapQueue, function( bundle ) { + var existing, maxBundle, minBundle, subtags; + subtags = coreSubtags( bundle ); + maxBundle = coreLikelySubtags( Cldr, cldr, subtags, { force: true } ) || subtags; + minBundle = coreRemoveLikelySubtags( Cldr, cldr, maxBundle ); + minBundle = minBundle.join( Cldr.localeSep ); + existing = availableBundleMapQueue[ minBundle ]; + if ( existing && existing.length < bundle.length ) { + return; + } + availableBundleMap[ minBundle ] = bundle; + }); + Cldr._availableBundleMapQueue = []; + } + + return availableBundleMap[ minLanguageId ] || null; + }; + + + + + var objectKeys = function( object ) { + var i, + result = []; + + if ( Object.keys ) { + return Object.keys( object ); + } + + for ( i in object ) { + result.push( i ); + } + + return result; + }; + + + + + var createError = function( code, attributes ) { + var error, message; + + message = code + ( attributes && JSON ? ": " + JSON.stringify( attributes ) : "" ); + error = new Error( message ); + error.code = code; + + // extend( error, attributes ); + arrayForEach( objectKeys( attributes ), function( attribute ) { + error[ attribute ] = attributes[ attribute ]; + }); + + return error; + }; + + + + + var validate = function( code, check, attributes ) { + if ( !check ) { + throw createError( code, attributes ); + } + }; + + + + + var validatePresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", typeof value !== "undefined", { + name: name + }); + }; + + + + + var validateType = function( value, name, check, expected ) { + validate( "E_INVALID_PAR_TYPE", check, { + expected: expected, + name: name, + value: value + }); + }; + + + + + var validateTypePath = function( value, name ) { + validateType( value, name, typeof value === "string" || arrayIsArray( value ), "String or Array" ); + }; + + + + + /** + * Function inspired by jQuery Core, but reduced to our use case. + */ + var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; + }; + + + + + var validateTypePlainObject = function( value, name ) { + validateType( value, name, typeof value === "undefined" || isPlainObject( value ), "Plain Object" ); + }; + + + + + var validateTypeString = function( value, name ) { + validateType( value, name, typeof value === "string", "a string" ); + }; + + + + + // @path: normalized path + var resourceGet = function( data, path ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + node = node[ path[ i ] ]; + if ( !node ) { + return undefined; + } + } + return node[ path[ i ] ]; + }; + + + + + /** + * setAvailableBundles( Cldr, json ) + * + * @Cldr [Cldr class] + * + * @json resolved/unresolved cldr data. + * + * Set available bundles queue based on passed json CLDR data. Considers a bundle as any String at /main/{bundle}. + */ + var coreSetAvailableBundles = function( Cldr, json ) { + var bundle, + availableBundleMapQueue = Cldr._availableBundleMapQueue, + main = resourceGet( json, [ "main" ] ); + + if ( main ) { + for ( bundle in main ) { + if ( main.hasOwnProperty( bundle ) && bundle !== "root" ) { + availableBundleMapQueue.push( bundle ); + } + } + } + }; + + + + var alwaysArray = function( somethingOrArray ) { + return arrayIsArray( somethingOrArray ) ? somethingOrArray : [ somethingOrArray ]; + }; + + + var jsonMerge = (function() { + + // Returns new deeply merged JSON. + // + // Eg. + // merge( { a: { b: 1, c: 2 } }, { a: { b: 3, d: 4 } } ) + // -> { a: { b: 3, c: 2, d: 4 } } + // + // @arguments JSON's + // + var merge = function() { + var destination = {}, + sources = [].slice.call( arguments, 0 ); + arrayForEach( sources, function( source ) { + var prop; + for ( prop in source ) { + if ( prop in destination && typeof destination[ prop ] === "object" && !arrayIsArray( destination[ prop ] ) ) { + + // Merge Objects + destination[ prop ] = merge( destination[ prop ], source[ prop ] ); + + } else { + + // Set new values + destination[ prop ] = source[ prop ]; + + } + } + }); + return destination; + }; + + return merge; + +}()); + + + /** + * load( Cldr, source, jsons ) + * + * @Cldr [Cldr class] + * + * @source [Object] + * + * @jsons [arguments] + */ + var coreLoad = function( Cldr, source, jsons ) { + var i, j, json; + + validatePresence( jsons[ 0 ], "json" ); + + // Support arbitrary parameters, e.g., `Cldr.load({...}, {...})`. + for ( i = 0; i < jsons.length; i++ ) { + + // Support array parameters, e.g., `Cldr.load([{...}, {...}])`. + json = alwaysArray( jsons[ i ] ); + + for ( j = 0; j < json.length; j++ ) { + validateTypePlainObject( json[ j ], "json" ); + source = jsonMerge( source, json[ j ] ); + coreSetAvailableBundles( Cldr, json[ j ] ); + } + } + + return source; + }; + + + + var itemGetResolved = function( Cldr, path, attributes ) { + // Resolve path + var normalizedPath = pathNormalize( path, attributes ); + + return resourceGet( Cldr._resolved, normalizedPath ); + }; + + + + + /** + * new Cldr() + */ + var Cldr = function( locale ) { + this.init( locale ); + }; + + // Build optimization hack to avoid duplicating functions across modules. + Cldr._alwaysArray = alwaysArray; + Cldr._coreLoad = coreLoad; + Cldr._createError = createError; + Cldr._itemGetResolved = itemGetResolved; + Cldr._jsonMerge = jsonMerge; + Cldr._pathNormalize = pathNormalize; + Cldr._resourceGet = resourceGet; + Cldr._validatePresence = validatePresence; + Cldr._validateType = validateType; + Cldr._validateTypePath = validateTypePath; + Cldr._validateTypePlainObject = validateTypePlainObject; + + Cldr._availableBundleMap = {}; + Cldr._availableBundleMapQueue = []; + Cldr._resolved = {}; + + // Allow user to override locale separator "-" (default) | "_". According to http://www.unicode.org/reports/tr35/#Unicode_language_identifier, both "-" and "_" are valid locale separators (eg. "en_GB", "en-GB"). According to http://unicode.org/cldr/trac/ticket/6786 its usage must be consistent throughout the data set. + Cldr.localeSep = "-"; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved cldr data. + */ + Cldr.load = function() { + Cldr._resolved = coreLoad( Cldr, Cldr._resolved, arguments ); + }; + + /** + * .init() automatically run on instantiation/construction. + */ + Cldr.prototype.init = function( locale ) { + var attributes, language, maxLanguageId, minLanguageId, script, subtags, territory, unicodeLocaleExtensions, variant, + sep = Cldr.localeSep; + + validatePresence( locale, "locale" ); + validateTypeString( locale, "locale" ); + + subtags = coreSubtags( locale ); + + unicodeLocaleExtensions = subtags[ 4 ]; + variant = subtags[ 3 ]; + + // Normalize locale code. + // Get (or deduce) the "triple subtags": language, territory (also aliased as region), and script subtags. + // Get the variant subtags (calendar, collation, currency, etc). + // refs: + // - http://www.unicode.org/reports/tr35/#Field_Definitions + // - http://www.unicode.org/reports/tr35/#Language_and_Locale_IDs + // - http://www.unicode.org/reports/tr35/#Unicode_locale_identifier + + // When a locale id does not specify a language, or territory (region), or script, they are obtained by Likely Subtags. + maxLanguageId = coreLikelySubtags( Cldr, this, subtags, { force: true } ) || subtags; + language = maxLanguageId[ 0 ]; + script = maxLanguageId[ 1 ]; + territory = maxLanguageId[ 2 ]; + + minLanguageId = coreRemoveLikelySubtags( Cldr, this, maxLanguageId ).join( sep ); + + // Set attributes + this.attributes = attributes = { + bundle: bundleLookup( Cldr, this, minLanguageId ), + + // Unicode Language Id + minlanguageId: minLanguageId, + maxLanguageId: maxLanguageId.join( sep ), + + // Unicode Language Id Subtabs + language: language, + script: script, + territory: territory, + region: territory, /* alias */ + variant: variant + }; + + // Unicode locale extensions. + unicodeLocaleExtensions && ( "-" + unicodeLocaleExtensions ).replace( /-[a-z]{3,8}|(-[a-z]{2})-([a-z]{3,8})/g, function( attribute, key, type ) { + + if ( key ) { + + // Extension is in the `keyword` form. + attributes[ "u" + key ] = type; + } else { + + // Extension is in the `attribute` form. + attributes[ "u" + attribute ] = true; + } + }); + + this.locale = locale; + }; + + /** + * .get() + */ + Cldr.prototype.get = function( path ) { + + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + return itemGetResolved( Cldr, path, this.attributes ); + }; + + /** + * .main() + */ + Cldr.prototype.main = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + validate( "E_MISSING_BUNDLE", this.attributes.bundle !== null, { + locale: this.locale + }); + + path = alwaysArray( path ); + return this.get( [ "main/{bundle}" ].concat( path ) ); + }; + + return Cldr; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/cldr.supplemental.js b/CS/MVCDashboardDesigner/Scripts/cldr.supplemental.js new file mode 100644 index 0000000..821abc4 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/cldr.supplemental.js @@ -0,0 +1,101 @@ +/** + * CLDR JavaScript Library v0.4.3 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-08-24T01:00Z + */ +/*! + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var alwaysArray = Cldr._alwaysArray; + + + + var supplementalMain = function( cldr ) { + + var prepend, supplemental; + + prepend = function( prepend ) { + return function( path ) { + path = alwaysArray( path ); + return cldr.get( [ prepend ].concat( path ) ); + }; + }; + + supplemental = prepend( "supplemental" ); + + // Week Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Week_Data + supplemental.weekData = prepend( "supplemental/weekData" ); + + supplemental.weekData.firstDay = function() { + return cldr.get( "supplemental/weekData/firstDay/{territory}" ) || + cldr.get( "supplemental/weekData/firstDay/001" ); + }; + + supplemental.weekData.minDays = function() { + var minDays = cldr.get( "supplemental/weekData/minDays/{territory}" ) || + cldr.get( "supplemental/weekData/minDays/001" ); + return parseInt( minDays, 10 ); + }; + + // Time Data + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + supplemental.timeData = prepend( "supplemental/timeData" ); + + supplemental.timeData.allowed = function() { + return cldr.get( "supplemental/timeData/{territory}/_allowed" ) || + cldr.get( "supplemental/timeData/001/_allowed" ); + }; + + supplemental.timeData.preferred = function() { + return cldr.get( "supplemental/timeData/{territory}/_preferred" ) || + cldr.get( "supplemental/timeData/001/_preferred" ); + }; + + return supplemental; + + }; + + + + + var initSuper = Cldr.prototype.init; + + /** + * .init() automatically ran on construction. + * + * Overload .init(). + */ + Cldr.prototype.init = function() { + initSuper.apply( this, arguments ); + this.supplemental = supplementalMain( this ); + }; + + return Cldr; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/cldr.unresolved.js b/CS/MVCDashboardDesigner/Scripts/cldr.unresolved.js new file mode 100644 index 0000000..8ac69d0 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/cldr.unresolved.js @@ -0,0 +1,164 @@ +/** + * CLDR JavaScript Library v0.4.3 + * http://jquery.com/ + * + * Copyright 2013 Rafael Xavier de Souza + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-08-24T01:00Z + */ +/*! + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier + * http://git.io/h4lmVg + */ +(function( factory ) { + + if ( typeof define === "function" && define.amd ) { + // AMD. + define( [ "../cldr" ], factory ); + } else if ( typeof module === "object" && typeof module.exports === "object" ) { + // Node. CommonJS. + module.exports = factory( require( "cldrjs" ) ); + } else { + // Global + factory( Cldr ); + } + +}(function( Cldr ) { + + // Build optimization hack to avoid duplicating functions across modules. + var coreLoad = Cldr._coreLoad; + var jsonMerge = Cldr._jsonMerge; + var pathNormalize = Cldr._pathNormalize; + var resourceGet = Cldr._resourceGet; + var validatePresence = Cldr._validatePresence; + var validateTypePath = Cldr._validateTypePath; + + + + var bundleParentLookup = function( Cldr, locale ) { + var normalizedPath, parent; + + if ( locale === "root" ) { + return; + } + + // First, try to find parent on supplemental data. + normalizedPath = pathNormalize( [ "supplemental/parentLocales/parentLocale", locale ] ); + parent = resourceGet( Cldr._resolved, normalizedPath ) || resourceGet( Cldr._raw, normalizedPath ); + if ( parent ) { + return parent; + } + + // Or truncate locale. + parent = locale.substr( 0, locale.lastIndexOf( Cldr.localeSep ) ); + if ( !parent ) { + return "root"; + } + + return parent; + }; + + + + + // @path: normalized path + var resourceSet = function( data, path, value ) { + var i, + node = data, + length = path.length; + + for ( i = 0; i < length - 1; i++ ) { + if ( !node[ path[ i ] ] ) { + node[ path[ i ] ] = {}; + } + node = node[ path[ i ] ]; + } + node[ path[ i ] ] = value; + }; + + + var itemLookup = (function() { + + var lookup; + + lookup = function( Cldr, locale, path, attributes, childLocale ) { + var normalizedPath, parent, value; + + // 1: Finish recursion + // 2: Avoid infinite loop + if ( typeof locale === "undefined" /* 1 */ || locale === childLocale /* 2 */ ) { + return; + } + + // Resolve path + normalizedPath = pathNormalize( path, attributes ); + + // Check resolved (cached) data first + // 1: Due to #16, never use the cached resolved non-leaf nodes. It may not + // represent its leafs in its entirety. + value = resourceGet( Cldr._resolved, normalizedPath ); + if ( value && typeof value !== "object" /* 1 */ ) { + return value; + } + + // Check raw data + value = resourceGet( Cldr._raw, normalizedPath ); + + if ( !value ) { + // Or, lookup at parent locale + parent = bundleParentLookup( Cldr, locale ); + value = lookup( Cldr, parent, path, jsonMerge( attributes, { bundle: parent }), locale ); + } + + if ( value ) { + // Set resolved (cached) + resourceSet( Cldr._resolved, normalizedPath, value ); + } + + return value; + }; + + return lookup; + +}()); + + + Cldr._raw = {}; + + /** + * Cldr.load( json [, json, ...] ) + * + * @json [JSON] CLDR data or [Array] Array of @json's. + * + * Load resolved or unresolved cldr data. + * Overwrite Cldr.load(). + */ + Cldr.load = function() { + Cldr._raw = coreLoad( Cldr, Cldr._raw, arguments ); + }; + + /** + * Overwrite Cldr.prototype.get(). + */ + Cldr.prototype.get = function( path ) { + validatePresence( path, "path" ); + validateTypePath( path, "path" ); + + // 1: use bundle as locale on item lookup for simplification purposes, because no other extended subtag is used anyway on bundle parent lookup. + // 2: during init(), this method is called, but bundle is yet not defined. Use "" as a workaround in this very specific scenario. + return itemLookup( Cldr, this.attributes && this.attributes.bundle /* 1 */ || "" /* 2 */, path, this.attributes ); + }; + + // In case cldr/unresolved is loaded after cldr/event, we trigger its overloads again. Because, .get is overwritten in here. + if ( Cldr._eventInit ) { + Cldr._eventInit(); + } + + return Cldr; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/globalize.currency.js b/CS/MVCDashboardDesigner/Scripts/globalize.currency.js new file mode 100644 index 0000000..2ab620e --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/globalize.currency.js @@ -0,0 +1,410 @@ +/*! + * Globalize v1.0.0 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-04-23T12:02Z + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + formatMessage = Globalize._formatMessage, + numberNumberingSystem = Globalize._numberNumberingSystem, + numberPattern = Globalize._numberPattern, + stringPad = Globalize._stringPad, + validate = Globalize._validate, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypeNumber = Globalize._validateParameterTypeNumber, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var validateParameterTypeCurrency = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" && ( /^[A-Za-z]{3}$/ ).test( value ), + "3-letter currency code string as defined by ISO 4217" + ); +}; + + + + +var validatePluralModulePresence = function() { + validate( "E_MISSING_PLURAL_MODULE", "Plural module not loaded.", + Globalize.plural !== undefined, {} ); +}; + + + + +/** + * supplementalOverride( currency, pattern, cldr ) + * + * Return pattern with fraction digits overriden by supplemental currency data. + */ +var currencySupplementalOverride = function( currency, pattern, cldr ) { + var digits, + fraction = cldr.supplemental([ "currencyData/fractions", currency ]) || + cldr.supplemental( "currencyData/fractions/DEFAULT" ); + + digits = +fraction._digits; + + if ( digits ) { + fraction = "." + stringPad( "0", digits ).slice( 0, -1 ) + fraction._rounding; + } else { + fraction = ""; + } + + return pattern.replace( /\.(#+|0*[0-9]|0+[0-9]?)/g, fraction ); +}; + + + + +var objectFilter = function( object, testRe ) { + var key, + copy = {}; + + for ( key in object ) { + if ( testRe.test( key ) ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +var currencyUnitPatterns = function( cldr ) { + return objectFilter( cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ) + ]), /^unitPattern/ ); +}; + + + + +/** + * codeProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyCodeProperties = function( currency, cldr ) { + var pattern = numberPattern( "decimal", cldr ); + + // The number of decimal places and the rounding for each currency is not locale-specific. Those + // values overridden by Supplemental Currency Data. + pattern = currencySupplementalOverride( currency, pattern, cldr ); + + return { + currency: currency, + pattern: pattern, + unitPatterns: currencyUnitPatterns( cldr ) + }; +}; + + + + +/** + * nameFormat( formattedNumber, pluralForm, properties ) + * + * Return the appropriate name form currency format. + */ +var currencyNameFormat = function( formattedNumber, pluralForm, properties ) { + var displayName, unitPattern, + displayNames = properties.displayNames || {}, + unitPatterns = properties.unitPatterns; + + displayName = displayNames[ "displayName-count-" + pluralForm ] || + displayNames[ "displayName-count-other" ] || + displayNames.displayName || + properties.currency; + unitPattern = unitPatterns[ "unitPattern-count-" + pluralForm ] || + unitPatterns[ "unitPattern-count-other" ]; + + return formatMessage( unitPattern, [ formattedNumber, displayName ]); +}; + + + + +/** + * nameProperties( currency, cldr ) + * + * Return number pattern with the appropriate currency code in as literal. + */ +var currencyNameProperties = function( currency, cldr ) { + var properties = currencyCodeProperties( currency, cldr ); + + properties.displayNames = objectFilter( cldr.main([ + "numbers/currencies", + currency + ]), /^displayName/ ); + + return properties; +}; + + + + +/** + * Unicode regular expression for: everything except math symbols, currency signs, dingbats, and + * box-drawing characters. + * + * Generated by: + * + * regenerate() + * .addRange( 0x0, 0x10FFFF ) + * .remove( require( "unicode-7.0.0/categories/S/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpNotS = /[\0-#%-\*,-;\?-\]_a-\{\}\x7F-\xA1\xA7\xAA\xAB\xAD\xB2\xB3\xB5-\xB7\xB9-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u0383\u0386-\u03F5\u03F7-\u0481\u0483-\u058C\u0590-\u0605\u0609\u060A\u060C\u060D\u0610-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF-\u07F5\u07F7-\u09F1\u09F4-\u09F9\u09FC-\u0AF0\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C7E\u0C80-\u0D78\u0D7A-\u0E3E\u0E40-\u0F00\u0F04-\u0F12\u0F14\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39-\u0FBD\u0FC6\u0FCD\u0FD0-\u0FD4\u0FD9-\u109D\u10A0-\u138F\u139A-\u17DA\u17DC-\u193F\u1941-\u19DD\u1A00-\u1B60\u1B6B-\u1B73\u1B7D-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF-\u2043\u2045-\u2051\u2053-\u2079\u207D-\u2089\u208D-\u209F\u20BE-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u218F\u2308-\u230B\u2329\u232A\u23FB-\u23FF\u2427-\u243F\u244B-\u249B\u24EA-\u24FF\u2768-\u2793\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2B74\u2B75\u2B96\u2B97\u2BBA-\u2BBC\u2BC9\u2BD2-\u2CE4\u2CEB-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u3003\u3005-\u3011\u3014-\u301F\u3021-\u3035\u3038-\u303D\u3040-\u309A\u309D-\u318F\u3192-\u3195\u31A0-\u31BF\u31E4-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u32FF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uAA76\uAA7A-\uAB5A\uAB5C-\uD7FF\uDC00-\uFB28\uFB2A-\uFBB1\uFBC2-\uFDFB\uFDFE-\uFE61\uFE63\uFE67\uFE68\uFE6A-\uFF03\uFF05-\uFF0A\uFF0C-\uFF1B\uFF1F-\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5F-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8D-\uDD8F\uDD9C-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDFFF]|[\uD801\uD803-\uD819\uD81B-\uD82E\uD830-\uD833\uD836-\uD83A\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD802[\uDC00-\uDC76\uDC79-\uDEC7\uDEC9-\uDFFF]|\uD81A[\uDC00-\uDF3B\uDF40-\uDF44\uDF46-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDDE-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD83B[\uDC00-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0F\uDD2F\uDD6C-\uDD6F\uDD9B-\uDDE5\uDE03-\uDE0F\uDE3B-\uDE3F\uDE49-\uDE4F\uDE52-\uDEFF\uDF2D-\uDF2F\uDF7E\uDF7F\uDFCF-\uDFD3\uDFF8-\uDFFF]|\uD83D[\uDCFF\uDD4B-\uDD4F\uDD7A\uDDA4\uDE43\uDE44\uDED0-\uDEDF\uDEED-\uDEEF\uDEF4-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDFFF]|[\uD800-\uDBFF]/; + + + + +/** + * symbolProperties( currency, cldr ) + * + * Return pattern replacing `¤` with the appropriate currency symbol literal. + */ +var currencySymbolProperties = function( currency, cldr, options ) { + var currencySpacing, pattern, + regexp = { + "[:digit:]": /\d/, + "[:^S:]": regexpNotS + }, + symbol = cldr.main([ + "numbers/currencies", + currency, + "symbol" + ]); + + currencySpacing = [ "beforeCurrency", "afterCurrency" ].map(function( position ) { + return cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + "currencySpacing", + position + ]); + }); + + pattern = cldr.main([ + "numbers", + "currencyFormats-numberSystem-" + numberNumberingSystem( cldr ), + options.style === "accounting" ? "accounting" : "standard" + ]); + + pattern = + + // The number of decimal places and the rounding for each currency is not locale-specific. + // Those values are overridden by Supplemental Currency Data. + currencySupplementalOverride( currency, pattern, cldr ) + + // Replace "¤" (\u00A4) with the appropriate symbol literal. + .split( ";" ).map(function( pattern ) { + + return pattern.split( "\u00A4" ).map(function( part, i ) { + var currencyMatch = regexp[ currencySpacing[ i ].currencyMatch ], + surroundingMatch = regexp[ currencySpacing[ i ].surroundingMatch ], + insertBetween = ""; + + // For currencyMatch and surroundingMatch definitions, read [1]. + // When i === 0, beforeCurrency is being handled. Otherwise, afterCurrency. + // 1: http://www.unicode.org/reports/tr35/tr35-numbers.html#Currencies + currencyMatch = currencyMatch.test( symbol.charAt( i ? symbol.length - 1 : 0 ) ); + surroundingMatch = surroundingMatch.test( + part.charAt( i ? 0 : part.length - 1 ).replace( /[#@,.]/g, "0" ) + ); + + if ( currencyMatch && part && surroundingMatch ) { + insertBetween = currencySpacing[ i ].insertBetween; + } + + return ( i ? insertBetween : "" ) + part + ( i ? "" : insertBetween ); + }).join( "'" + symbol + "'" ); + }).join( ";" ); + + return { + pattern: pattern + }; +}; + + + + +/** + * objectOmit( object, keys ) + * + * Return a copy of the object, filtered to omit the blacklisted key or array of keys. + */ +var objectOmit = function( object, keys ) { + var key, + copy = {}; + + keys = alwaysArray( keys ); + + for ( key in object ) { + if ( keys.indexOf( key ) === -1 ) { + copy[ key ] = object[ key ]; + } + } + + return copy; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ /supplemental\/currencyData\/fractions\/[A-Za-z]{3}$/ ] + }); +} + +/** + * .currencyFormatter( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: + * - style: [String] "symbol" (default), "accounting", "code" or "name". + * - see also number/format options. + * + * Return a function that formats a currency according to the given options and default/instance + * locale. + */ +Globalize.currencyFormatter = +Globalize.prototype.currencyFormatter = function( currency, options ) { + var cldr, numberFormatter, plural, properties, style; + + validateParameterPresence( currency, "currency" ); + validateParameterTypeCurrency( currency, "currency" ); + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + style = options.style || "symbol"; + cldr = this.cldr; + + validateDefaultLocale( cldr ); + + // Get properties given style ("symbol" default, "code" or "name"). + cldr.on( "get", validateRequiredCldr ); + properties = ({ + accounting: currencySymbolProperties, + code: currencyCodeProperties, + name: currencyNameProperties, + symbol: currencySymbolProperties + }[ style ] )( currency, cldr, options ); + cldr.off( "get", validateRequiredCldr ); + + // options = options minus style, plus raw pattern. + options = objectOmit( options, "style" ); + options.raw = properties.pattern; + + // Return formatter when style is "symbol" or "accounting". + if ( style === "symbol" || style === "accounting" ) { + return this.numberFormatter( options ); + } + + // Return formatter when style is "code" or "name". + validatePluralModulePresence(); + numberFormatter = this.numberFormatter( options ); + plural = this.pluralGenerator(); + return function( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return currencyNameFormat( numberFormatter( value ), plural( value ), properties ); + }; +}; + +/** + * .currencyParser( currency [, options] ) + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Return the currency parser according to the given options and the default/instance locale. + */ +Globalize.currencyParser = +Globalize.prototype.currencyParser = function( /* currency, options */ ) { + + // TODO implement parser. + +}; + +/** + * .formatCurrency( value, currency [, options] ) + * + * @value [Number] number to be formatted. + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object] see currencyFormatter. + * + * Format a currency according to the given options and the default/instance locale. + */ +Globalize.formatCurrency = +Globalize.prototype.formatCurrency = function( value, currency, options ) { + return this.currencyFormatter( currency, options )( value ); +}; + +/** + * .parseCurrency( value, currency [, options] ) + * + * @value [String] + * + * @currency [String] 3-letter currency code as defined by ISO 4217. + * + * @options [Object]: See currencyFormatter. + * + * Return the parsed currency or NaN when value is invalid. + */ +Globalize.parseCurrency = +Globalize.prototype.parseCurrency = function( /* value, currency, options */ ) { +}; + +return Globalize; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/globalize.date.js b/CS/MVCDashboardDesigner/Scripts/globalize.date.js new file mode 100644 index 0000000..9efc0c1 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/globalize.date.js @@ -0,0 +1,1887 @@ +/** + * Globalize v1.0.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-20T16:57Z + */ +/*! + * Globalize v1.0.1 2016-01-20T16:57Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "./number", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, + formatMessage = Globalize._formatMessage, + numberSymbol = Globalize._numberSymbol, + regexpEscape = Globalize._regexpEscape, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var validateParameterTypeDate = function( value, name ) { + validateParameterType( value, name, value === undefined || value instanceof Date, "Date" ); +}; + + + + +var createErrorInvalidParameterValue = function( name, value ) { + return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", { + name: name, + value: value + }); +}; + + + + +/** + * expandPattern( options, cldr ) + * + * @options [Object] if String, it's considered a skeleton. Object accepts: + * - skeleton: [String] lookup availableFormat; + * - date: [String] ( "full" | "long" | "medium" | "short" ); + * - time: [String] ( "full" | "long" | "medium" | "short" ); + * - datetime: [String] ( "full" | "long" | "medium" | "short" ); + * - raw: [String] For more info see datetime/format.js. + * + * @cldr [Cldr instance]. + * + * Return the corresponding pattern. + * Eg for "en": + * - "GyMMMd" returns "MMM d, y G"; + * - { skeleton: "GyMMMd" } returns "MMM d, y G"; + * - { date: "full" } returns "EEEE, MMMM d, y"; + * - { time: "full" } returns "h:mm:ss a zzzz"; + * - { datetime: "full" } returns "EEEE, MMMM d, y 'at' h:mm:ss a zzzz"; + * - { raw: "dd/mm" } returns "dd/mm"; + */ + +var dateExpandPattern = function( options, cldr ) { + var dateSkeleton, result, skeleton, timeSkeleton, type; + + function combineDateTime( type, datePattern, timePattern ) { + return formatMessage( + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats", + type + ]), + [ timePattern, datePattern ] + ); + } + + switch ( true ) { + case "skeleton" in options: + skeleton = options.skeleton; + result = cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + skeleton + ]); + if ( !result ) { + timeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ]; + dateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ]; + if ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) { + type = "full"; + } else if ( /MMMM/g.test( dateSkeleton ) ) { + type = "long"; + } else if ( /MMM/g.test( dateSkeleton ) || /LLL/g.test( dateSkeleton ) ) { + type = "medium"; + } else { + type = "short"; + } + result = combineDateTime( type, + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + dateSkeleton + ]), + cldr.main([ + "dates/calendars/gregorian/dateTimeFormats/availableFormats", + timeSkeleton + ]) + ); + } + break; + + case "date" in options: + case "time" in options: + result = cldr.main([ + "dates/calendars/gregorian", + "date" in options ? "dateFormats" : "timeFormats", + ( options.date || options.time ) + ]); + break; + + case "datetime" in options: + result = combineDateTime( options.datetime, + cldr.main([ "dates/calendars/gregorian/dateFormats", options.datetime ]), + cldr.main([ "dates/calendars/gregorian/timeFormats", options.datetime ]) + ); + break; + + case "raw" in options: + result = options.raw; + break; + + default: + throw createErrorInvalidParameterValue({ + name: "options", + value: options + }); + } + + return result; +}; + + + + +/** + * dayOfWeek( date, firstDay ) + * + * @date + * + * @firstDay the result of `dateFirstDayOfWeek( cldr )` + * + * Return the day of the week normalized by the territory's firstDay [0-6]. + * Eg for "mon": + * - return 0 if territory is GB, or BR, or DE, or FR (week starts on "mon"); + * - return 1 if territory is US (week starts on "sun"); + * - return 2 if territory is EG (week starts on "sat"); + */ +var dateDayOfWeek = function( date, firstDay ) { + return ( date.getDay() - firstDay + 7 ) % 7; +}; + + + + +/** + * distanceInDays( from, to ) + * + * Return the distance in days between from and to Dates. + */ +var dateDistanceInDays = function( from, to ) { + var inDays = 864e5; + return ( to.getTime() - from.getTime() ) / inDays; +}; + + + + +/** + * startOf changes the input to the beginning of the given unit. + * + * For example, starting at the start of a day, resets hours, minutes + * seconds and milliseconds to 0. Starting at the month does the same, but + * also sets the date to 1. + * + * Returns the modified date + */ +var dateStartOf = function( date, unit ) { + date = new Date( date.getTime() ); + switch ( unit ) { + case "year": + date.setMonth( 0 ); + /* falls through */ + case "month": + date.setDate( 1 ); + /* falls through */ + case "day": + date.setHours( 0 ); + /* falls through */ + case "hour": + date.setMinutes( 0 ); + /* falls through */ + case "minute": + date.setSeconds( 0 ); + /* falls through */ + case "second": + date.setMilliseconds( 0 ); + } + return date; +}; + + + + +/** + * dayOfYear + * + * Return the distance in days of the date to the begin of the year [0-d]. + */ +var dateDayOfYear = function( date ) { + return Math.floor( dateDistanceInDays( dateStartOf( date, "year" ), date ) ); +}; + + + + +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + +/** + * firstDayOfWeek + */ +var dateFirstDayOfWeek = function( cldr ) { + return dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() ); +}; + + + + +/** + * millisecondsInDay + */ +var dateMillisecondsInDay = function( date ) { + + // TODO Handle daylight savings discontinuities + return date - dateStartOf( date, "day" ); +}; + + + + +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); + + + + +/** + * hourFormat( date, format, timeSeparator, formatNumber ) + * + * Return date's timezone offset according to the format passed. + * Eg for format when timezone offset is 180: + * - "+H;-H": -3 + * - "+HHmm;-HHmm": -0300 + * - "+HH:mm;-HH:mm": -03:00 + */ +var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) { + var absOffset, + offset = date.getTimezoneOffset(); + + absOffset = Math.abs( offset ); + formatNumber = formatNumber || { + 1: function( value ) { + return stringPad( value, 1 ); + }, + 2: function( value ) { + return stringPad( value, 2 ); + } + }; + + return format + + // Pick the correct sign side (+ or -). + .split( ";" )[ offset > 0 ? 1 : 0 ] + + // Localize time separator + .replace( ":", timeSeparator ) + + // Update hours offset. + .replace( /HH?/, function( match ) { + return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) ); + }) + + // Update minutes offset and return. + .replace( /mm/, function() { + return formatNumber[ 2 ]( absOffset % 60 ); + }); +}; + + + + +/** + * format( date, properties ) + * + * @date [Date instance]. + * + * @properties + * + * TODO Support other calendar types. + * + * Disclosure: this function borrows excerpts of dojo/date/locale. + */ +var dateFormat = function( date, numberFormatters, properties ) { + var timeSeparator = properties.timeSeparator; + + return properties.pattern.replace( datePatternRe, function( current ) { + var ret, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTime; + } + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + ret = properties.eras[ date.getFullYear() < 0 ? 0 : 1 ]; + break; + + // Year + case "y": + + // Plain year. + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + ret = date.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + case "Y": + + // Year in "Week of Year" + // The length specifies the padding, but for two letters it also specifies the + // maximum length. + // yearInWeekofYear = date + DaysInAWeek - (dayOfWeek - firstDay) - minDays + ret = new Date( date.getTime() ); + ret.setDate( + ret.getDate() + 7 - + dateDayOfWeek( date, properties.firstDay ) - + properties.firstDay - + properties.minDays + ); + ret = ret.getFullYear(); + if ( length === 2 ) { + ret = String( ret ); + ret = +ret.substr( ret.length - 2 ); + } + break; + + // Quarter + case "Q": + case "q": + ret = Math.ceil( ( date.getMonth() + 1 ) / 3 ); + if ( length > 2 ) { + ret = properties.quarters[ chr ][ length ][ ret ]; + } + break; + + // Month + case "M": + case "L": + ret = date.getMonth() + 1; + if ( length > 2 ) { + ret = properties.months[ chr ][ length ][ ret ]; + } + break; + + // Week + case "w": + + // Week of Year. + // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. + // TODO should pad on ww? Not documented, but I guess so. + ret = dateDayOfWeek( dateStartOf( date, "year" ), properties.firstDay ); + ret = Math.ceil( ( dateDayOfYear( date ) + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + case "W": + + // Week of Month. + // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. + ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); + ret = Math.ceil( ( date.getDate() + ret ) / 7 ) - + ( 7 - ret >= properties.minDays ? 0 : 1 ); + break; + + // Day + case "d": + ret = date.getDate(); + break; + + case "D": + ret = dateDayOfYear( date ) + 1; + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + ret = Math.floor( date.getDate() / 7 ) + 1; + break; + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + + // Range is [1-7] (deduced by example provided on documentation) + // TODO Should pad with zeros (not specified in the docs)? + ret = dateDayOfWeek( date, properties.firstDay ) + 1; + break; + } + + /* falls through */ + case "E": + ret = dateWeekDays[ date.getDay() ]; + ret = properties.days[ chr ][ length ][ ret ]; + break; + + // Period (AM or PM) + case "a": + ret = properties.dayPeriods[ date.getHours() < 12 ? "am" : "pm" ]; + break; + + // Hour + case "h": // 1-12 + ret = ( date.getHours() % 12 ) || 12; + break; + + case "H": // 0-23 + ret = date.getHours(); + break; + + case "K": // 0-11 + ret = date.getHours() % 12; + break; + + case "k": // 1-24 + ret = date.getHours() || 24; + break; + + // Minute + case "m": + ret = date.getMinutes(); + break; + + // Second + case "s": + ret = date.getSeconds(); + break; + + case "S": + ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) ); + break; + + case "A": + ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( date.getTimezoneOffset() === 0 ) { + ret = properties.gmtZeroFormat; + } else { + ret = dateTimezoneHourFormat( + date, + length < 4 ? "+H;-H" : properties.tzLongHourFormat, + timeSeparator, + numberFormatters + ); + ret = properties.gmtFormat.replace( /\{0\}/, ret ); + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( date.getTimezoneOffset() === 0 ) { + ret = "Z"; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ); + ret = dateTimezoneHourFormat( date, ret, ":" ); + break; + + // timeSeparator + case ":": + ret = timeSeparator; + break; + + // ' literals. + case "'": + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + ret = current; + break; + + // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and + // arabic characters. + default: + ret = current; + } + if ( typeof ret === "number" ) { + ret = numberFormatters[ length ]( ret ); + } + return ret; + }); +}; + + + + +/** + * properties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + * + * @cldr [Cldr instance]. + * + * Return the properties given the pattern and cldr. + * + * TODO Support other calendar types. + */ +var dateFormatProperties = function( pattern, cldr ) { + var properties = { + numberFormatters: {}, + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function setNumberFormatterPattern( pad ) { + properties.numberFormatters[ pad ] = stringPad( "", pad ); + } + + pattern.replace( datePatternRe, function( current ) { + var formatNumber, + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + properties.preferredTime = chr = cldr.supplemental.timeData.preferred(); + } + + // ZZZZ: same as "OOOO". + if ( chr === "Z" && length === 4 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + properties.eras = cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + + // Plain year. + formatNumber = true; + break; + + case "Y": + + // Year in "Week of Year" + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + if ( !properties.quarters ) { + properties.quarters = {}; + } + if ( !properties.quarters[ chr ] ) { + properties.quarters[ chr ] = {}; + } + properties.quarters[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Month + case "M": + case "L": + if ( length > 2 ) { + if ( !properties.months ) { + properties.months = {}; + } + if ( !properties.months[ chr ] ) { + properties.months[ chr ] = {}; + } + properties.months[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } else { + formatNumber = true; + } + break; + + // Week - Week of Year (w) or Week of Month (W). + case "w": + case "W": + properties.firstDay = dateFirstDayOfWeek( cldr ); + properties.minDays = cldr.supplemental.weekData.minDays(); + formatNumber = true; + break; + + // Day + case "d": + case "D": + case "F": + formatNumber = true; + break; + + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + if ( length <= 2 ) { + properties.firstDay = dateFirstDayOfWeek( cldr ); + formatNumber = true; + break; + } + + /* falls through */ + case "E": + if ( !properties.days ) { + properties.days = {}; + } + if ( !properties.days[ chr ] ) { + properties.days[ chr ] = {}; + } + if ( length === 6 ) { + + // If short day names are not explicitly specified, abbreviated day names are + // used instead. + // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + // http://unicode.org/cldr/trac/ticket/6790 + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + "abbreviated" + ]); + } else { + properties.days[ chr ][ length ] = cldr.main([ + "dates/calendars/gregorian/days", + chr === "c" ? "stand-alone" : "format", + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + properties.dayPeriods = cldr.main( + "dates/calendars/gregorian/dayPeriods/format/wide" + ); + break; + + // Hour + case "h": // 1-12 + case "H": // 0-23 + case "K": // 0-11 + case "k": // 1-24 + + // Minute + case "m": + + // Second + case "s": + case "S": + case "A": + formatNumber = true; + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + properties.gmtFormat = cldr.main( "dates/timeZoneNames/gmtFormat" ); + properties.gmtZeroFormat = cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" ); + + /* falls through */ + case "Z": + case "X": + case "x": + setNumberFormatterPattern( 1 ); + setNumberFormatterPattern( 2 ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + + if ( formatNumber ) { + setNumberFormatterPattern( length ); + } + }); + + return properties; +}; + + + + +/** + * isLeapYear( year ) + * + * @year [Number] + * + * Returns an indication whether the specified year is a leap year. + */ +var dateIsLeapYear = function( year ) { + return new Date( year, 1, 29 ).getMonth() === 1; +}; + + + + +/** + * lastDayOfMonth( date ) + * + * @date [Date] + * + * Return the last day of the given date's month + */ +var dateLastDayOfMonth = function( date ) { + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); +}; + + + + +/** + * Differently from native date.setDate(), this function returns a date whose + * day remains inside the month boundaries. For example: + * + * setDate( FebDate, 31 ): a "Feb 28" date. + * setDate( SepDate, 31 ): a "Sep 30" date. + */ +var dateSetDate = function( date, day ) { + var lastDay = new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); + + date.setDate( day < 1 ? 1 : day < lastDay ? day : lastDay ); +}; + + + + +/** + * Differently from native date.setMonth(), this function adjusts date if + * needed, so final month is always the one set. + * + * setMonth( Jan31Date, 1 ): a "Feb 28" date. + * setDate( Jan31Date, 8 ): a "Sep 30" date. + */ +var dateSetMonth = function( date, month ) { + var originalDate = date.getDate(); + + date.setDate( 1 ); + date.setMonth( month ); + dateSetDate( date, originalDate ); +}; + + + + +var outOfRange = function( value, low, high ) { + return value < low || value > high; +}; + + + + +/** + * parse( value, tokens, properties ) + * + * @value [String] string date. + * + * @tokens [Object] tokens returned by date/tokenizer. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns + */ +var dateParse = function( value, tokens, properties ) { + var amPm, day, daysOfYear, era, hour, hour12, timezoneOffset, valid, + YEAR = 0, + MONTH = 1, + DAY = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECONDS = 6, + date = new Date(), + truncateAt = [], + units = [ "year", "month", "day", "hour", "minute", "second", "milliseconds" ]; + + if ( !tokens.length ) { + return null; + } + + valid = tokens.every(function( token ) { + var century, chr, value, length; + + if ( token.type === "literal" ) { + + // continue + return true; + } + + chr = token.type.charAt( 0 ); + length = token.type.length; + + if ( chr === "j" ) { + + // Locale preferred hHKk. + // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data + chr = properties.preferredTimeData; + } + + switch ( chr ) { + + // Era + case "G": + truncateAt.push( YEAR ); + era = +token.value; + break; + + // Year + case "y": + value = token.value; + if ( length === 2 ) { + if ( outOfRange( value, 0, 99 ) ) { + return false; + } + + // mimic dojo/date/locale: choose century to apply, according to a sliding + // window of 80 years before and 20 years after present year. + century = Math.floor( date.getFullYear() / 100 ) * 100; + value += century; + if ( value > date.getFullYear() + 20 ) { + value -= 100; + } + } + date.setFullYear( value ); + truncateAt.push( YEAR ); + break; + + case "Y": // Year in "Week of Year" + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter (skip) + case "Q": + case "q": + break; + + // Month + case "M": + case "L": + if ( length <= 2 ) { + value = token.value; + } else { + value = +token.value; + } + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + dateSetMonth( date, value - 1 ); + truncateAt.push( MONTH ); + break; + + // Week (skip) + case "w": // Week of Year. + case "W": // Week of Month. + break; + + // Day + case "d": + day = token.value; + truncateAt.push( DAY ); + break; + + case "D": + daysOfYear = token.value; + truncateAt.push( DAY ); + break; + + case "F": + + // Day of Week in month. eg. 2nd Wed in July. + // Skip + break; + + // Week day + case "e": + case "c": + case "E": + + // Skip. + // value = arrayIndexOf( dateWeekDays, token.value ); + break; + + // Period (AM or PM) + case "a": + amPm = token.value; + break; + + // Hour + case "h": // 1-12 + value = token.value; + if ( outOfRange( value, 1, 12 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value === 12 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "K": // 0-11 + value = token.value; + if ( outOfRange( value, 0, 11 ) ) { + return false; + } + hour = hour12 = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + case "k": // 1-24 + value = token.value; + if ( outOfRange( value, 1, 24 ) ) { + return false; + } + hour = true; + date.setHours( value === 24 ? 0 : value ); + truncateAt.push( HOUR ); + break; + + case "H": // 0-23 + value = token.value; + if ( outOfRange( value, 0, 23 ) ) { + return false; + } + hour = true; + date.setHours( value ); + truncateAt.push( HOUR ); + break; + + // Minute + case "m": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setMinutes( value ); + truncateAt.push( MINUTE ); + break; + + // Second + case "s": + value = token.value; + if ( outOfRange( value, 0, 59 ) ) { + return false; + } + date.setSeconds( value ); + truncateAt.push( SECOND ); + break; + + case "A": + date.setHours( 0 ); + date.setMinutes( 0 ); + date.setSeconds( 0 ); + + /* falls through */ + case "S": + value = Math.round( token.value * Math.pow( 10, 3 - length ) ); + date.setMilliseconds( value ); + truncateAt.push( MILLISECONDS ); + break; + + // Zone + case "Z": + case "z": + case "O": + case "X": + case "x": + timezoneOffset = token.value - date.getTimezoneOffset(); + break; + } + + return true; + }); + + if ( !valid ) { + return null; + } + + // 12-hour format needs AM or PM, 24-hour format doesn't, ie. return null + // if amPm && !hour12 || !amPm && hour12. + if ( hour && !( !amPm ^ hour12 ) ) { + return null; + } + + if ( era === 0 ) { + + // 1 BC = year 0 + date.setFullYear( date.getFullYear() * -1 + 1 ); + } + + if ( day !== undefined ) { + if ( outOfRange( day, 1, dateLastDayOfMonth( date ) ) ) { + return null; + } + date.setDate( day ); + } else if ( daysOfYear !== undefined ) { + if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { + return null; + } + date.setMonth( 0 ); + date.setDate( daysOfYear ); + } + + if ( hour12 && amPm === "pm" ) { + date.setHours( date.getHours() + 12 ); + } + + if ( timezoneOffset ) { + date.setMinutes( date.getMinutes() + timezoneOffset ); + } + + // Truncate date at the most precise unit defined. Eg. + // If value is "12/31", and pattern is "MM/dd": + // => new Date( , 12, 31, 0, 0, 0, 0 ); + truncateAt = Math.max.apply( null, truncateAt ); + date = dateStartOf( date, units[ truncateAt ] ); + + return date; +}; + + + + +/** + * parseProperties( cldr ) + * + * @cldr [Cldr instance]. + * + * Return parser properties. + */ +var dateParseProperties = function( cldr ) { + return { + preferredTimeData: cldr.supplemental.timeData.preferred() + }; +}; + + + + +/** + * Generated by: + * + * regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString(); + * + * https://github.com/mathiasbynens/regenerate + * https://github.com/mathiasbynens/unicode-7.0.0 + */ +var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/; + + + + +/** + * tokenizer( value, pattern, properties ) + * + * @value [String] string date. + * + * @properties [Object] output returned by date/tokenizer-properties. + * + * Returns an Array of tokens, eg. value "5 o'clock PM", pattern "h 'o''clock' a": + * [{ + * type: "h", + * lexeme: "5" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "literal", + * lexeme: "o'clock" + * }, { + * type: "literal", + * lexeme: " " + * }, { + * type: "a", + * lexeme: "PM", + * value: "pm" + * }] + * + * OBS: lexeme's are always String and may return invalid ranges depending of the token type. + * Eg. "99" for month number. + * + * Return an empty Array when not successfully parsed. + */ +var dateTokenizer = function( value, numberParser, properties ) { + var valid, + timeSeparator = properties.timeSeparator, + tokens = [], + widths = [ "abbreviated", "wide", "narrow" ]; + + valid = properties.pattern.match( datePatternRe ).every(function( current ) { + var chr, length, numeric, tokenRe, + token = {}; + + function hourFormatParse( tokenRe, numberParser ) { + var aux = value.match( tokenRe ); + numberParser = numberParser || function( value ) { + return +value; + }; + + if ( !aux ) { + return false; + } + + // hourFormat containing H only, e.g., `+H;-H` + if ( aux.length < 8 ) { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 4 ] ) ) * 60; + + // hourFormat containing H and m, e.g., `+HHmm;-HHmm` + } else { + token.value = + ( aux[ 1 ] ? -numberParser( aux[ 1 ] ) : numberParser( aux[ 7 ] ) ) * 60 + + ( aux[ 1 ] ? -numberParser( aux[ 4 ] ) : numberParser( aux[ 10 ] ) ); + } + + return true; + } + + // Transform: + // - "+H;-H" -> /\+(\d\d?)|-(\d\d?)/ + // - "+HH;-HH" -> /\+(\d\d)|-(\d\d)/ + // - "+HHmm;-HHmm" -> /\+(\d\d)(\d\d)|-(\d\d)(\d\d)/ + // - "+HH:mm;-HH:mm" -> /\+(\d\d):(\d\d)|-(\d\d):(\d\d)/ + // + // If gmtFormat is GMT{0}, the regexp must fill {0} in each side, e.g.: + // - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/ + function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) { + var re; + + if ( !gmtFormat ) { + gmtFormat = "{0}"; + } + + re = hourFormat + .replace( "+", "\\+" ) + + // Unicode equivalent to (\\d\\d) + .replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" ) + + // Unicode equivalent to (\\d\\d?) + .replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" ); + + if ( timeSeparator ) { + re = re.replace( /:/g, timeSeparator ); + } + + re = re.split( ";" ).map(function( part ) { + return gmtFormat.replace( "{0}", part ); + }).join( "|" ); + + return new RegExp( re ); + } + + function oneDigitIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d/ + numeric = true; + return tokenRe = regexpN; + } + } + + function oneOrTwoDigitsIfLengthOne() { + if ( length === 1 ) { + + // Unicode equivalent to /\d\d?/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" ); + } + } + + function twoDigitsIfLengthTwo() { + if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + numeric = true; + return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } + } + + // Brute-force test every locale entry in an attempt to match the given value. + // Return the first found one (and set token accordingly), or null. + function lookup( path ) { + var i, re, + data = properties[ path.join( "/" ) ]; + + for ( i in data ) { + re = new RegExp( "^" + data[ i ] ); + if ( re.test( value ) ) { + token.value = i; + return tokenRe = new RegExp( data[ i ] ); + } + } + return null; + } + + token.type = current; + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" ) { + + // Z..ZZZ: same as "xxxx". + if ( length < 4 ) { + chr = "x"; + length = 4; + + // ZZZZ: same as "OOOO". + } else if ( length < 5 ) { + chr = "O"; + length = 4; + + // ZZZZZ: same as "XXXXX" + } else { + chr = "X"; + length = 5; + } + } + + switch ( chr ) { + + // Era + case "G": + lookup([ + "gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "y": + case "Y": + numeric = true; + + // number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ... + if ( length === 1 ) { + + // Unicode equivalent to /\d+/. + tokenRe = new RegExp( "(" + regexpN.source + ")+" ); + } else if ( length === 2 ) { + + // Unicode equivalent to /\d\d/ + tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" ); + } else { + + // Unicode equivalent to /\d{length,}/ + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" ); + } + break; + + // Quarter + case "Q": + case "q": + + // number l=1:{1}, l=2:{2}. + // lookup l=3... + oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ + "gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + break; + + // Day + case "D": + + // number {l,3}. + if ( length <= 3 ) { + + // Unicode equivalent to /\d{length,3}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" ); + } + break; + + case "W": + case "F": + + // number l=1:{1}. + oneDigitIfLengthOne(); + break; + + // Week day + case "e": + case "c": + + // number l=1:{1}, l=2:{2}. + // lookup for length >=3. + if ( length <= 2 ) { + oneDigitIfLengthOne() || twoDigitsIfLengthTwo(); + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + lookup([ + "gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + lookup([ + "gregorian/dayPeriods/format/wide" + ]); + break; + + // Week, Day, Hour, Minute, or Second + case "w": + case "d": + case "h": + case "H": + case "K": + case "k": + case "j": + case "m": + case "s": + + // number l1:{1,2}, l2:{2}. + oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); + break; + + case "S": + + // number {l}. + + // Unicode equivalent to /\d{length}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" ); + break; + + case "A": + + // number {l+5}. + + // Unicode equivalent to /\d{length+5}/ + numeric = true; + tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" ); + break; + + // Zone + case "z": + case "O": + + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". + // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". + if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { + token.value = 0; + tokenRe = new RegExp( properties[ "timeZoneNames/gmtZeroFormat" ] ); + } else { + tokenRe = hourFormatRe( + length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ], + properties[ "timeZoneNames/gmtFormat" ], + timeSeparator + ); + if ( !hourFormatParse( tokenRe, numberParser ) ) { + return null; + } + } + break; + + case "X": + + // Same as x*, except it uses "Z" for zero offset. + if ( value === "Z" ) { + token.value = 0; + tokenRe = /Z/; + break; + } + + /* falls through */ + case "x": + + // x: hourFormat("+HH;-HH") + // xx or xxxx: hourFormat("+HHmm;-HHmm") + // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") + tokenRe = hourFormatRe( + length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" ) + ); + if ( !hourFormatParse( tokenRe ) ) { + return null; + } + break; + + case "'": + token.type = "literal"; + current = current.replace( /''/, "'" ); + if ( length > 2 ) { + current = current.slice( 1, -1 ); + } + tokenRe = new RegExp( regexpEscape( current ) ); + break; + + default: + token.type = "literal"; + tokenRe = /./; + } + + if ( !tokenRe ) { + return false; + } + + // Get lexeme and consume it. + value = value.replace( new RegExp( "^" + tokenRe.source ), function( lexeme ) { + token.lexeme = lexeme; + if ( numeric ) { + token.value = numberParser( lexeme ); + } + return ""; + }); + + if ( !token.lexeme ) { + return false; + } + + tokens.push( token ); + return true; + }); + + if ( value !== "" ) { + valid = false; + } + + return valid ? tokens : []; +}; + + + + +/** + * tokenizerProperties( pattern, cldr ) + * + * @pattern [String] raw pattern. + * + * @cldr [Cldr instance]. + * + * Return Object with data that will be used by tokenizer. + */ +var dateTokenizerProperties = function( pattern, cldr ) { + var properties = { + pattern: pattern, + timeSeparator: numberSymbol( "timeSeparator", cldr ) + }, + widths = [ "abbreviated", "wide", "narrow" ]; + + function populateProperties( path, value ) { + + // The `dates` and `calendars` trim's purpose is to reduce properties' key size only. + properties[ path.replace( /^.*\/dates\//, "" ).replace( /calendars\//, "" ) ] = value; + } + + cldr.on( "get", populateProperties ); + + pattern.match( datePatternRe ).forEach(function( current ) { + var chr, length; + + chr = current.charAt( 0 ), + length = current.length; + + if ( chr === "Z" && length < 5 ) { + chr = "O"; + length = 4; + } + + switch ( chr ) { + + // Era + case "G": + cldr.main([ + "dates/calendars/gregorian/eras", + length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) + ]); + break; + + // Year + case "u": // Extended year. Need to be implemented. + case "U": // Cyclic year name. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "year pattern `" + chr + "`" + }); + + // Quarter + case "Q": + case "q": + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/quarters", + chr === "Q" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Month + case "M": + case "L": + + // number l=1:{1,2}, l=2:{2}. + // lookup l=3... + if ( length > 2 ) { + cldr.main([ + "dates/calendars/gregorian/months", + chr === "M" ? "format" : "stand-alone", + widths[ length - 3 ] + ]); + } + break; + + // Day + case "g": + + // Modified Julian day. Need to be implemented. + throw createErrorUnsupportedFeature({ + feature: "Julian day pattern `g`" + }); + + // Week day + case "e": + case "c": + + // lookup for length >=3. + if ( length <= 2 ) { + break; + } + + /* falls through */ + case "E": + if ( length === 6 ) { + + // Note: if short day names are not explicitly specified, abbreviated day + // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "short" + ]) || cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + "abbreviated" + ]); + } else { + cldr.main([ + "dates/calendars/gregorian/days", + [ chr === "c" ? "stand-alone" : "format" ], + widths[ length < 3 ? 0 : length - 3 ] + ]); + } + break; + + // Period (AM or PM) + case "a": + cldr.main([ + "dates/calendars/gregorian/dayPeriods/format/wide" + ]); + break; + + // Zone + case "z": + case "O": + cldr.main( "dates/timeZoneNames/gmtFormat" ); + cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); + cldr.main( "dates/timeZoneNames/hourFormat" ); + break; + + case "v": + case "V": + throw createErrorUnsupportedFeature({ + feature: "timezone pattern `" + chr + "`" + }); + } + }); + + cldr.off( "get", populateProperties ); + + return properties; +}; + + + + +function validateRequiredCldr( path, value ) { + validateCldr( path, value, { + skip: [ + /dates\/calendars\/gregorian\/dateTimeFormats\/availableFormats/, + /dates\/calendars\/gregorian\/days\/.*\/short/, + /supplemental\/timeData\/(?!001)/, + /supplemental\/weekData\/(?!001)/ + ] + }); +} + +/** + * .dateFormatter( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a date formatter function (of the form below) according to the given options and the + * default/instance locale. + * + * fn( value ) + * + * @value [Date] + * + * Return a function that formats a date according to the given `format` and the default/instance + * locale. + */ +Globalize.dateFormatter = +Globalize.prototype.dateFormatter = function( options ) { + var cldr, numberFormatters, pad, pattern, properties; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + properties = dateFormatProperties( pattern, cldr ); + cldr.off( "get", validateRequiredCldr ); + + // Create needed number formatters. + numberFormatters = properties.numberFormatters; + delete properties.numberFormatters; + for ( pad in numberFormatters ) { + numberFormatters[ pad ] = this.numberFormatter({ + raw: numberFormatters[ pad ] + }); + } + + return function( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + return dateFormat( value, numberFormatters, properties ); + }; +}; + +/** + * .dateParser( options ) + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a function that parses a string date according to the given `formats` and the + * default/instance locale. + */ +Globalize.dateParser = +Globalize.prototype.dateParser = function( options ) { + var cldr, numberParser, parseProperties, pattern, tokenizerProperties; + + validateParameterTypePlainObject( options, "options" ); + + cldr = this.cldr; + options = options || { skeleton: "yMd" }; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateRequiredCldr ); + pattern = dateExpandPattern( options, cldr ); + tokenizerProperties = dateTokenizerProperties( pattern, cldr ); + parseProperties = dateParseProperties( cldr ); + cldr.off( "get", validateRequiredCldr ); + + numberParser = this.numberParser({ raw: "0" }); + + return function( value ) { + var tokens; + + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; +}; + +/** + * .formatDate( value, options ) + * + * @value [Date] + * + * @options [Object] see date/expand_pattern for more info. + * + * Formats a date or number according to the given options string and the default/instance locale. + */ +Globalize.formatDate = +Globalize.prototype.formatDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); + + return this.dateFormatter( options )( value ); +}; + +/** + * .parseDate( value, options ) + * + * @value [String] + * + * @options [Object] see date/expand_pattern for more info. + * + * Return a Date instance or null. + */ +Globalize.parseDate = +Globalize.prototype.parseDate = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.dateParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/globalize.js b/CS/MVCDashboardDesigner/Scripts/globalize.js new file mode 100644 index 0000000..4c81ece --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/globalize.js @@ -0,0 +1,356 @@ +/** + * Globalize v1.0.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-20T16:57Z + */ +/*! + * Globalize v1.0.1 2016-01-20T16:57Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ) ); + } else { + + // Global + root.Globalize = factory( root.Cldr ); + } +}( this, function( Cldr ) { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var alwaysArray = function( stringOrArray ) { + return Array.isArray( stringOrArray ) ? stringOrArray : stringOrArray ? [ stringOrArray ] : []; +}; + + + + +var validateCldr = function( path, value, options ) { + var skipBoolean; + options = options || {}; + + skipBoolean = alwaysArray( options.skip ).some(function( pathRe ) { + return pathRe.test( path ); + }); + + validate( "E_MISSING_CLDR", "Missing required CLDR content `{path}`.", value || skipBoolean, { + path: path + }); +}; + + + + +var validateDefaultLocale = function( value ) { + validate( "E_DEFAULT_LOCALE_NOT_DEFINED", "Default locale has not been defined.", + value !== undefined, {} ); +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +/** + * range( value, name, minimum, maximum ) + * + * @value [Number]. + * + * @name [String] name of variable. + * + * @minimum [Number]. The lowest valid value, inclusive. + * + * @maximum [Number]. The greatest valid value, inclusive. + */ +var validateParameterRange = function( value, name, minimum, maximum ) { + validate( + "E_PAR_OUT_OF_RANGE", + "Parameter `{name}` has value `{value}` out of range [{minimum}, {maximum}].", + value === undefined || value >= minimum && value <= maximum, + { + maximum: maximum, + minimum: minimum, + name: name, + value: value + } + ); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeLocale = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string" || value instanceof Cldr, + "String or Cldr instance" + ); +}; + + + + +/** + * Function inspired by jQuery Core, but reduced to our use case. + */ +var isPlainObject = function( obj ) { + return obj !== null && "" + obj === "[object Object]"; +}; + + + + +var validateParameterTypePlainObject = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ), + "Plain Object" + ); +}; + + + + +var alwaysCldr = function( localeOrCldr ) { + return localeOrCldr instanceof Cldr ? localeOrCldr : new Cldr( localeOrCldr ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function validateLikelySubtags( cldr ) { + cldr.once( "get", validateCldr ); + cldr.get( "supplemental/likelySubtags" ); +} + +/** + * [new] Globalize( locale|cldr ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Create a Globalize instance. + */ +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeLocale( locale, "locale" ); + + this.cldr = alwaysCldr( locale ); + + validateLikelySubtags( this.cldr ); +} + +/** + * Globalize.load( json, ... ) + * + * @json [JSON] + * + * Load resolved or unresolved cldr data. + * Somewhat equivalent to previous Globalize.addCultureInfo(...). + */ +Globalize.load = function() { + + // validations are delegated to Cldr.load(). + Cldr.load.apply( Cldr, arguments ); +}; + +/** + * Globalize.locale( [locale|cldr] ) + * + * @locale [String] + * + * @cldr [Cldr instance] + * + * Set default Cldr instance if locale or cldr argument is passed. + * + * Return the default Cldr instance. + */ +Globalize.locale = function( locale ) { + validateParameterTypeLocale( locale, "locale" ); + + if ( arguments.length ) { + this.cldr = alwaysCldr( locale ); + validateLikelySubtags( this.cldr ); + } + return this.cldr; +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._alwaysArray = alwaysArray; +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._isPlainObject = isPlainObject; +Globalize._objectExtend = objectExtend; +Globalize._regexpEscape = regexpEscape; +Globalize._stringPad = stringPad; +Globalize._validate = validate; +Globalize._validateCldr = validateCldr; +Globalize._validateDefaultLocale = validateDefaultLocale; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterRange = validateParameterRange; +Globalize._validateParameterTypePlainObject = validateParameterTypePlainObject; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/globalize.message.js b/CS/MVCDashboardDesigner/Scripts/globalize.message.js new file mode 100644 index 0000000..ebfc8f8 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/globalize.message.js @@ -0,0 +1,1846 @@ +/** + * Globalize v1.0.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-20T16:57Z + */ +/*! + * Globalize v1.0.1 2016-01-20T16:57Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Extend global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var alwaysArray = Globalize._alwaysArray, + isPlainObject = Globalize._isPlainObject, + validate = Globalize._validate, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; +/** + * messageformat.js + * + * ICU PluralFormat + SelectFormat for JavaScript + * + * Copyright 2014 + * + * Licensed under the MIT License + * + * @author Alex Sexton - @SlexAxton + * @version 0.2.1 + * @contributor_license Dojo CLA + */ + +var MessageFormat; +/* jshint ignore:start */ +MessageFormat = (function() { + + function MessageFormat(locale, pluralFunc, formatters) { + if (!locale) { + this.lc = ['en']; + } else if (typeof locale == 'string') { + this.lc = []; + for (var l = locale; l; l = l.replace(/[-_]?[^-_]*$/, '')) this.lc.push(l); + } else { + this.lc = locale; + } + + this.runtime.pf = {}; + this.runtime.pf[this.lc[0]] = pluralFunc; + this.runtime.fmt = {}; + if (formatters) for (var f in formatters) { + this.runtime.fmt[f] = formatters[f]; + } + } + + if (!('plurals' in MessageFormat)) MessageFormat.plurals = {}; + + + + // note: Intl is not defined in default Node until joyent/node#7676 lands + MessageFormat.formatters = { + number: function(self) { + return new Function("v,lc,p", + "return Intl.NumberFormat(lc,\n" + + " p=='integer' ? {maximumFractionDigits:0}\n" + + " : p=='percent' ? {style:'percent'}\n" + + " : p=='currency' ? {style:'currency', currency:'" + (self.currency || 'USD') + "', minimumFractionDigits:2, maximumFractionDigits:2}\n" + + " : {}).format(v)" + ); + }, + date: function(v,lc,p) { + var o = {day:'numeric', month:'short', year:'numeric'}; + switch (p) { + case 'full': o.weekday = 'long'; + case 'long': o.month = 'long'; break; + case 'short': o.month = 'numeric'; + } + return (new Date(v)).toLocaleDateString(lc, o) + }, + time: function(v,lc,p) { + var o = {second:'numeric', minute:'numeric', hour:'numeric'}; + switch (p) { + case 'full': case 'long': o.timeZoneName = 'short'; break; + case 'short': delete o.minute; + } + return (new Date(v)).toLocaleTimeString(lc, o) + } + }; + + MessageFormat.prototype.setIntlSupport = function(enable) { + this.withIntlSupport = !!enable || (typeof enable == 'undefined'); + return this; + }; + + MessageFormat.prototype.runtime = { + _n: function(v,o){if(isNaN(v))throw new Error("'"+v+"' isn't a number.");return v-(o||0)}, + _p: function(v,o,l,p,s){return v in p?p[v]:(v=l(v-o,s),v in p?p[v]:p.other)}, + _s: function(v,p){return v in p?p[v]:p.other}, + pf: {}, + fmt: {}, + toString: function () { + var _stringify = function(o, top) { + if (typeof o != 'object') return o.toString().replace(/^(function) \w*/, '$1'); + var s = []; + for (var i in o) if (i != 'toString') { + s.push((top ? i + '=' : JSON.stringify(i) + ':') + _stringify(o[i], false)); + } + return top ? s.join(',\n') : '{' + s.join(',\n') + '}'; + }; + return _stringify(this, true); + } + }; + + // This is generated and pulled in for browsers. + var mparser = (function() { + /* + * Generated by PEG.js 0.8.0. + * + * http://pegjs.majda.cz/ + */ + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function SyntaxError(message, expected, found, offset, line, column) { + this.message = message; + this.expected = expected; + this.found = found; + this.offset = offset; + this.line = line; + this.column = column; + + this.name = "SyntaxError"; + } + + peg$subclass(SyntaxError, Error); + + function parse(input) { + var options = arguments.length > 1 ? arguments[1] : {}, + + peg$FAILED = {}, + + peg$startRuleFunctions = { start: peg$parsestart }, + peg$startRuleFunction = peg$parsestart, + + peg$c0 = function(messageFormatPattern) { return { type: "program", program: messageFormatPattern }; }, + peg$c1 = peg$FAILED, + peg$c2 = [], + peg$c3 = function(s1, inner) { + var st = []; + if ( s1 && s1.val ) { + st.push( s1 ); + } + for( var i in inner ){ + if ( inner.hasOwnProperty( i ) ) { + st.push( inner[ i ] ); + } + } + return { type: 'messageFormatPattern', statements: st }; + }, + peg$c4 = "{", + peg$c5 = { type: "literal", value: "{", description: "\"{\"" }, + peg$c6 = "}", + peg$c7 = { type: "literal", value: "}", description: "\"}\"" }, + peg$c8 = function(mfe, s1) { + var res = []; + if ( mfe ) { + res.push(mfe); + } + if ( s1 && s1.val ) { + res.push( s1 ); + } + return { type: "messageFormatPatternRight", statements : res }; + }, + peg$c9 = null, + peg$c10 = ",", + peg$c11 = { type: "literal", value: ",", description: "\",\"" }, + peg$c12 = function(argIdx, efmt) { + var res = { + type: "messageFormatElement", + argumentIndex: argIdx + }; + if ( efmt && efmt.length ) { + res.elementFormat = efmt[1]; + } + else { + res.output = true; + } + return res; + }, + peg$c13 = "plural", + peg$c14 = { type: "literal", value: "plural", description: "\"plural\"" }, + peg$c15 = function(t, s) { + return { + type : "elementFormat", + key : t, + val : s.val + }; + }, + peg$c16 = "selectordinal", + peg$c17 = { type: "literal", value: "selectordinal", description: "\"selectordinal\"" }, + peg$c18 = "select", + peg$c19 = { type: "literal", value: "select", description: "\"select\"" }, + peg$c20 = function(t, p) { + return { + type : "elementFormat", + key : t, + val : p + }; + }, + peg$c21 = function(pfp) { + return { type: "pluralStyle", val: pfp }; + }, + peg$c22 = function(sfp) { + return { type: "selectStyle", val: sfp }; + }, + peg$c23 = function(op, pf) { + var res = { + type: "pluralFormatPattern", + pluralForms: pf + }; + if ( op ) { + res.offset = op; + } + else { + res.offset = 0; + } + return res; + }, + peg$c24 = "offset", + peg$c25 = { type: "literal", value: "offset", description: "\"offset\"" }, + peg$c26 = ":", + peg$c27 = { type: "literal", value: ":", description: "\":\"" }, + peg$c28 = function(d) { + return d; + }, + peg$c29 = function(pf) { + return { + type: "selectFormatPattern", + pluralForms: pf + }; + }, + peg$c30 = function(k, mfp) { + return { + type: "pluralForms", + key: k, + val: mfp + }; + }, + peg$c31 = function(i) { + return i; + }, + peg$c32 = "=", + peg$c33 = { type: "literal", value: "=", description: "\"=\"" }, + peg$c34 = function(p) { + return p; + }, + peg$c35 = function(ws, s) { + var tmp = []; + for( var i = 0; i < s.length; ++i ) { + for( var j = 0; j < s[ i ].length; ++j ) { + tmp.push(s[i][j]); + } + } + return { + type: "string", + val: ws + tmp.join('') + }; + }, + peg$c36 = /^[0-9a-zA-Z$_]/, + peg$c37 = { type: "class", value: "[0-9a-zA-Z$_]", description: "[0-9a-zA-Z$_]" }, + peg$c38 = /^[^ \t\n\r,.+={}]/, + peg$c39 = { type: "class", value: "[^ \\t\\n\\r,.+={}]", description: "[^ \\t\\n\\r,.+={}]" }, + peg$c40 = function(s1, s2) { + return s1 + (s2 ? s2.join('') : ''); + }, + peg$c41 = function(chars) { return chars.join(''); }, + peg$c42 = /^[^{}\\\0-\x1F \t\n\r]/, + peg$c43 = { type: "class", value: "[^{}\\\\\\0-\\x1F \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F \\t\\n\\r]" }, + peg$c44 = function(x) { + return x; + }, + peg$c45 = "\\#", + peg$c46 = { type: "literal", value: "\\#", description: "\"\\\\#\"" }, + peg$c47 = function() { + return "\\#"; + }, + peg$c48 = "\\{", + peg$c49 = { type: "literal", value: "\\{", description: "\"\\\\{\"" }, + peg$c50 = function() { + return "\u007B"; + }, + peg$c51 = "\\}", + peg$c52 = { type: "literal", value: "\\}", description: "\"\\\\}\"" }, + peg$c53 = function() { + return "\u007D"; + }, + peg$c54 = "\\u", + peg$c55 = { type: "literal", value: "\\u", description: "\"\\\\u\"" }, + peg$c56 = function(h1, h2, h3, h4) { + return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4)); + }, + peg$c57 = /^[0-9]/, + peg$c58 = { type: "class", value: "[0-9]", description: "[0-9]" }, + peg$c59 = function(ds) { + return parseInt((ds.join('')), 10); + }, + peg$c60 = /^[0-9a-fA-F]/, + peg$c61 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" }, + peg$c62 = { type: "other", description: "whitespace" }, + peg$c63 = function(w) { return w.join(''); }, + peg$c64 = /^[ \t\n\r]/, + peg$c65 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, + + peg$currPos = 0, + peg$reportedPos = 0, + peg$cachedPos = 0, + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }, + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$reportedPos, peg$currPos); + } + + function offset() { + return peg$reportedPos; + } + + function line() { + return peg$computePosDetails(peg$reportedPos).line; + } + + function column() { + return peg$computePosDetails(peg$reportedPos).column; + } + + function expected(description) { + throw peg$buildException( + null, + [{ type: "other", description: description }], + peg$reportedPos + ); + } + + function error(message) { + throw peg$buildException(message, null, peg$reportedPos); + } + + function peg$computePosDetails(pos) { + function advance(details, startPos, endPos) { + var p, ch; + + for (p = startPos; p < endPos; p++) { + ch = input.charAt(p); + if (ch === "\n") { + if (!details.seenCR) { details.line++; } + details.column = 1; + details.seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + details.line++; + details.column = 1; + details.seenCR = true; + } else { + details.column++; + details.seenCR = false; + } + } + } + + if (peg$cachedPos !== pos) { + if (peg$cachedPos > pos) { + peg$cachedPos = 0; + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }; + } + advance(peg$cachedPosDetails, peg$cachedPos, pos); + peg$cachedPos = pos; + } + + return peg$cachedPosDetails; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildException(message, expected, pos) { + function cleanupExpected(expected) { + var i = 1; + + expected.sort(function(a, b) { + if (a.description < b.description) { + return -1; + } else if (a.description > b.description) { + return 1; + } else { + return 0; + } + }); + + while (i < expected.length) { + if (expected[i - 1] === expected[i]) { + expected.splice(i, 1); + } else { + i++; + } + } + } + + function buildMessage(expected, found) { + function stringEscape(s) { + function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } + + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\x08/g, '\\b') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\f/g, '\\f') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); }) + .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); }) + .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); }); + } + + var expectedDescs = new Array(expected.length), + expectedDesc, foundDesc, i; + + for (i = 0; i < expected.length; i++) { + expectedDescs[i] = expected[i].description; + } + + expectedDesc = expected.length > 1 + ? expectedDescs.slice(0, -1).join(", ") + + " or " + + expectedDescs[expected.length - 1] + : expectedDescs[0]; + + foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; + + return "Expected " + expectedDesc + " but " + foundDesc + " found."; + } + + var posDetails = peg$computePosDetails(pos), + found = pos < input.length ? input.charAt(pos) : null; + + if (expected !== null) { + cleanupExpected(expected); + } + + return new SyntaxError( + message !== null ? message : buildMessage(expected, found), + expected, + found, + pos, + posDetails.line, + posDetails.column + ); + } + + function peg$parsestart() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parsemessageFormatPattern(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c0(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsemessageFormatPattern() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parsestring(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsemessageFormatPatternRight(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsemessageFormatPatternRight(); + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c3(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parsemessageFormatPatternRight() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c4; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c5); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse_(); + if (s2 !== peg$FAILED) { + s3 = peg$parsemessageFormatElement(); + if (s3 !== peg$FAILED) { + s4 = peg$parse_(); + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c6; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parsestring(); + if (s6 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c8(s3, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parsemessageFormatElement() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 44) { + s3 = peg$c10; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c11); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseelementFormat(); + if (s4 !== peg$FAILED) { + s3 = [s3, s4]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$c1; + } + } else { + peg$currPos = s2; + s2 = peg$c1; + } + if (s2 === peg$FAILED) { + s2 = peg$c9; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c12(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parseelementFormat() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c13) { + s2 = peg$c13; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c14); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c10; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c11); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsepluralStyle(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 13) === peg$c16) { + s2 = peg$c16; + peg$currPos += 13; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c17); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c10; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c11); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parseselectStyle(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c18) { + s2 = peg$c18; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c19); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c10; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c11); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parseselectStyle(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parseid(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseargStylePattern(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseargStylePattern(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c20(s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } + } + } + + return s0; + } + + function peg$parsepluralStyle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parsepluralFormatPattern(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c21(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseselectStyle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseselectFormatPattern(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c22(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsepluralFormatPattern() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseoffsetPattern(); + if (s1 === peg$FAILED) { + s1 = peg$c9; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsepluralForms(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsepluralForms(); + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c23(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parseoffsetPattern() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 6) === peg$c24) { + s2 = peg$c24; + peg$currPos += 6; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c26; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsedigits(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c28(s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parseselectFormatPattern() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsepluralForms(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsepluralForms(); + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c29(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsepluralForms() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = peg$parsestringKey(); + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c4; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c5); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + s6 = peg$parsemessageFormatPattern(); + if (s6 !== peg$FAILED) { + s7 = peg$parse_(); + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s8 = peg$c6; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + if (s8 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c30(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parsestringKey() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseid(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c31(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 61) { + s1 = peg$c32; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c33); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsedigits(); + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c28(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } + + return s0; + } + + function peg$parseargStylePattern() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c10; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c11); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse_(); + if (s3 !== peg$FAILED) { + s4 = peg$parseid(); + if (s4 !== peg$FAILED) { + s5 = peg$parse_(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c34(s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parsestring() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parse_(); + if (s4 !== peg$FAILED) { + s5 = peg$parsechars(); + if (s5 !== peg$FAILED) { + s6 = peg$parse_(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c1; + } + } else { + peg$currPos = s3; + s3 = peg$c1; + } + } else { + peg$currPos = s3; + s3 = peg$c1; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse_(); + if (s4 !== peg$FAILED) { + s5 = peg$parsechars(); + if (s5 !== peg$FAILED) { + s6 = peg$parse_(); + if (s6 !== peg$FAILED) { + s4 = [s4, s5, s6]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c1; + } + } else { + peg$currPos = s3; + s3 = peg$c1; + } + } else { + peg$currPos = s3; + s3 = peg$c1; + } + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c35(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parseid() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parse_(); + if (s1 !== peg$FAILED) { + if (peg$c36.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c37); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c38.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c38.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c39); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse_(); + if (s4 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c40(s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + + return s0; + } + + function peg$parsechars() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + s2 = peg$parsechar(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsechar(); + } + } else { + s1 = peg$c1; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c41(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsechar() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (peg$c42.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c43); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c44(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c45) { + s1 = peg$c45; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c47(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c48) { + s1 = peg$c48; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c50(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c51) { + s1 = peg$c51; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c52); } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c53(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c54) { + s1 = peg$c54; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c55); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsehexDigit(); + if (s2 !== peg$FAILED) { + s3 = peg$parsehexDigit(); + if (s3 !== peg$FAILED) { + s4 = peg$parsehexDigit(); + if (s4 !== peg$FAILED) { + s5 = peg$parsehexDigit(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c56(s2, s3, s4, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } else { + peg$currPos = s0; + s0 = peg$c1; + } + } + } + } + } + + return s0; + } + + function peg$parsedigits() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c57.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + } + } else { + s1 = peg$c1; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c59(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsehexDigit() { + var s0; + + if (peg$c60.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c61); } + } + + return s0; + } + + function peg$parse_() { + var s0, s1, s2; + + peg$silentFails++; + s0 = peg$currPos; + s1 = []; + s2 = peg$parsewhitespace(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsewhitespace(); + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c63(s1); + } + s0 = s1; + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + + return s0; + } + + function peg$parsewhitespace() { + var s0; + + if (peg$c64.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + + return s0; + } + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail({ type: "end", description: "end of input" }); + } + + throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos); + } + } + + return { + SyntaxError: SyntaxError, + parse: parse + }; + })(); + + MessageFormat._parse = function () { + // Bind to itself so error handling works + return mparser.parse.apply( mparser, arguments ); + }; + + var propname = function(s) { + return /^[A-Z_$][0-9A-Z_$]*$/i.test(s) ? s : JSON.stringify(s); + }; + + MessageFormat.prototype._precompile = function(ast, data) { + data = data || { keys: {}, offset: {} }; + var r = [], i, tmp, args = []; + + switch ( ast.type ) { + case 'messageFormatPattern': + for ( i = 0; i < ast.statements.length; ++i ) { + r.push(this._precompile( ast.statements[i], data )); + } + tmp = r.join('+') || '""'; + return data.pf_count ? tmp : 'function(d){return ' + tmp + '}'; + + case 'messageFormatPatternRight': + for ( i = 0; i < ast.statements.length; ++i ) { + r.push(this._precompile( ast.statements[i], data )); + } + return r.join('+'); + + case 'messageFormatElement': + data.pf_count = data.pf_count || 0; + if ( ast.output ) { + return 'd[' + JSON.stringify(ast.argumentIndex) + ']'; + } + else { + data.keys[data.pf_count] = JSON.stringify(ast.argumentIndex); + return this._precompile( ast.elementFormat, data ); + } + return ''; + + case 'elementFormat': + var args = [ 'd[' + data.keys[data.pf_count] + ']' ]; + switch (ast.key) { + case 'select': + args.push(this._precompile(ast.val, data)); + return '_s(' + args.join(',') + ')'; + case 'selectordinal': + args = args.concat([ 0, 'pf[' + JSON.stringify(this.lc[0]) + ']', this._precompile(ast.val, data), 1 ]); + return '_p(' + args.join(',') + ')'; + case 'plural': + data.offset[data.pf_count || 0] = ast.val.offset || 0; + args = args.concat([ data.offset[data.pf_count] || 0, 'pf[' + JSON.stringify(this.lc[0]) + ']', this._precompile(ast.val, data) ]); + return '_p(' + args.join(',') + ')'; + default: + if (this.withIntlSupport && !(ast.key in this.runtime.fmt) && (ast.key in MessageFormat.formatters)) { + tmp = MessageFormat.formatters[ast.key]; + this.runtime.fmt[ast.key] = (typeof tmp(this) == 'function') ? tmp(this) : tmp; + } + args.push(JSON.stringify(this.lc)); + if (ast.val && ast.val.length) args.push(JSON.stringify(ast.val.length == 1 ? ast.val[0] : ast.val)); + return 'fmt.' + ast.key + '(' + args.join(',') + ')'; + } + + case 'pluralFormatPattern': + case 'selectFormatPattern': + data.pf_count = data.pf_count || 0; + if (ast.type == 'selectFormatPattern') data.offset[data.pf_count] = 0; + var needOther = true; + for ( i = 0; i < ast.pluralForms.length; ++i ) { + var key = ast.pluralForms[i].key; + if ( key === 'other' ) { + needOther = false; + } + var data_copy = JSON.parse(JSON.stringify(data)); + data_copy.pf_count++; + r.push(propname(key) + ':' + this._precompile(ast.pluralForms[i].val, data_copy)); + } + if ( needOther ) { + throw new Error("No 'other' form found in " + ast.type + " " + data.pf_count); + } + return '{' + r.join(',') + '}'; + + case 'string': + tmp = '"' + (ast.val || "").replace(/\n/g, '\\n').replace(/"/g, '\\"') + '"'; + if ( data.pf_count ) { + args = [ 'd[' + data.keys[data.pf_count-1] + ']' ]; + if (data.offset[data.pf_count-1]) args.push(data.offset[data.pf_count-1]); + tmp = tmp.replace(/(^|[^\\])#/g, '$1"+' + '_n(' + args.join(',') + ')+"'); + tmp = tmp.replace(/^""\+/, '').replace(/\+""$/, ''); + } + return tmp; + + default: + throw new Error( 'Bad AST type: ' + ast.type ); + } + }; + + MessageFormat.prototype.compile = function ( messages, opt ) { + var r = {}, lc0 = this.lc, + compileMsg = function(self, msg) { + try { + var ast = MessageFormat._parse(msg).program; + return self._precompile(ast); + } catch (e) { + throw new Error((ast ? 'Precompiler' : 'Parser') + ' error: ' + e.toString()); + } + }, + stringify = function(r) { + if (typeof r != 'object') return r; + var o = []; + for (var k in r) o.push(propname(k) + ':' + stringify(r[k])); + return '{\n' + o.join(',\n') + '}'; + }; + + if (typeof messages == 'string') { + var f = new Function('_n,_p,_s,pf,fmt', 'return ' + compileMsg(this, messages)); + return f(this.runtime._n, this.runtime._p, this.runtime._s, this.runtime.pf, this.runtime.fmt); + } + + opt = opt || {}; + + for (var ns in messages) { + if (opt.locale) this.lc = opt.locale[ns] && [].concat(opt.locale[ns]) || lc0; + if (typeof messages[ns] == 'string') { + try { r[ns] = compileMsg(this, messages[ns]); } + catch (e) { e.message = e.message.replace(':', ' with `' + ns + '`:'); throw e; } + } else { + r[ns] = {}; + for (var key in messages[ns]) { + try { r[ns][key] = compileMsg(this, messages[ns][key]); } + catch (e) { e.message = e.message.replace(':', ' with `' + key + '` in `' + ns + '`:'); throw e; } + } + } + } + + this.lc = lc0; + var s = 'var\n' + this.runtime.toString() + ';\n\n'; + switch (opt.global || '') { + case 'exports': + var o = []; + for (var k in r) o.push('exports[' + JSON.stringify(k) + '] = ' + stringify(r[k])); + return new Function(s + o.join(';\n')); + case 'module.exports': + return new Function(s + 'module.exports = ' + stringify(r)); + case '': + return new Function(s + 'return ' + stringify(r)); + default: + return new Function('G', s + 'G[' + JSON.stringify(opt.global) + '] = ' + stringify(r)); + } + }; + + + return MessageFormat; +}()); +/* jshint ignore:end */ + + +var validateMessageBundle = function( cldr ) { + validate( + "E_MISSING_MESSAGE_BUNDLE", + "Missing message bundle for locale `{locale}`.", + cldr.attributes.bundle && cldr.get( "globalize-messages/{bundle}" ) !== undefined, + { + locale: cldr.locale + } + ); +}; + + + + +var validateMessagePresence = function( path, value ) { + path = path.join( "/" ); + validate( "E_MISSING_MESSAGE", "Missing required message content `{path}`.", + value !== undefined, { path: path } ); +}; + + + + +var validateMessageType = function( path, value ) { + path = path.join( "/" ); + validate( + "E_INVALID_MESSAGE", + "Invalid message content `{path}`. {expected} expected.", + typeof value === "string", + { + expected: "a string", + path: path + } + ); +}; + + + + +var validateParameterTypeMessageVariables = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || isPlainObject( value ) || Array.isArray( value ), + "Array or Plain Object" + ); +}; + + + + +var validatePluralModulePresence = function() { + validate( "E_MISSING_PLURAL_MODULE", "Plural module not loaded.", + Globalize.plural !== undefined, {} ); +}; + + + + +var slice = [].slice; + +function MessageFormatInit( globalize, cldr ) { + var plural; + return new MessageFormat( cldr.locale, function( value ) { + if ( !plural ) { + validatePluralModulePresence(); + plural = globalize.pluralGenerator(); + } + return plural( value ); + }); +} + +/** + * .loadMessages( json ) + * + * @json [JSON] + * + * Load translation data. + */ +Globalize.loadMessages = function( json ) { + var locale, + customData = { + "globalize-messages": json, + "main": {} + }; + + validateParameterPresence( json, "json" ); + validateParameterTypePlainObject( json, "json" ); + + // Set available bundles by populating customData main dataset. + for ( locale in json ) { + if ( json.hasOwnProperty( locale ) ) { + customData.main[ locale ] = {}; + } + } + + Cldr.load( customData ); +}; + +/** + * .messageFormatter( path ) + * + * @path [String or Array] + * + * Format a message given its path. + */ +Globalize.messageFormatter = +Globalize.prototype.messageFormatter = function( path ) { + var cldr, formatter, message; + + validateParameterPresence( path, "path" ); + validateParameterType( path, "path", typeof path === "string" || Array.isArray( path ), + "a String nor an Array" ); + + path = alwaysArray( path ); + cldr = this.cldr; + + validateDefaultLocale( cldr ); + validateMessageBundle( cldr ); + + message = cldr.get( [ "globalize-messages/{bundle}" ].concat( path ) ); + validateMessagePresence( path, message ); + + // If message is an Array, concatenate it. + if ( Array.isArray( message ) ) { + message = message.join( " " ); + } + validateMessageType( path, message ); + + formatter = MessageFormatInit( this, cldr ).compile( message ); + + return function( variables ) { + if ( typeof variables === "number" || typeof variables === "string" ) { + variables = slice.call( arguments, 0 ); + } + validateParameterTypeMessageVariables( variables, "variables" ); + return formatter( variables ); + }; +}; + +/** + * .formatMessage( path [, variables] ) + * + * @path [String or Array] + * + * @variables [Number, String, Array or Object] + * + * Format a message given its path. + */ +Globalize.formatMessage = +Globalize.prototype.formatMessage = function( path /* , variables */ ) { + return this.messageFormatter( path ).apply( {}, slice.call( arguments, 1 ) ); +}; + +return Globalize; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/globalize.number.js b/CS/MVCDashboardDesigner/Scripts/globalize.number.js new file mode 100644 index 0000000..9e2a1de --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/globalize.number.js @@ -0,0 +1,1275 @@ +/** + * Globalize v1.0.1 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-20T16:57Z + */ +/*! + * Globalize v1.0.1 2016-01-20T16:57Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "cldr", + "../globalize", + "cldr/event", + "cldr/supplemental" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + } else { + + // Global + factory( root.Cldr, root.Globalize ); + } +}(this, function( Cldr, Globalize ) { + +var createError = Globalize._createError, + objectExtend = Globalize._objectExtend, + regexpEscape = Globalize._regexpEscape, + stringPad = Globalize._stringPad, + validateCldr = Globalize._validateCldr, + validateDefaultLocale = Globalize._validateDefaultLocale, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterRange = Globalize._validateParameterRange, + validateParameterType = Globalize._validateParameterType, + validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +/** + * NumberingSystem( cldr ) + * + * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems + * - http://cldr.unicode.org/index/bcp47-extension + * - http://www.unicode.org/reports/tr35/#u_Extension + */ +var numberNumberingSystem = function( cldr ) { + var nu = cldr.attributes[ "u-nu" ]; + + if ( nu ) { + if ( nu === "traditio" ) { + nu = "traditional"; + } + if ( [ "native", "traditional", "finance" ].indexOf( nu ) !== -1 ) { + + // Unicode locale extension `u-nu` is set using either (native, traditional or + // finance). So, lookup the respective locale's numberingSystem and return it. + return cldr.main([ "numbers/otherNumberingSystems", nu ]); + } + + // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it. + return nu; + } + + // Return the default numberingSystem. + return cldr.main( "numbers/defaultNumberingSystem" ); +}; + + + + +/** + * nuMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return digits map if numbering system is different than `latn`. + */ +var numberNumberingSystemDigitsMap = function( cldr ) { + var aux, + nu = numberNumberingSystem( cldr ); + + if ( nu === "latn" ) { + return; + } + + aux = cldr.supplemental([ "numberingSystems", nu ]); + + if ( aux._type !== "numeric" ) { + throw createErrorUnsupportedFeature( "`" + aux._type + "` numbering system" ); + } + + return aux._digits; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix? + * padding? + * (integer_fraction_pattern | significant_pattern) + * scientific_notation? + * suffix? + * + * prefix = non_number_stuff + * + * padding = "*" regexp(.) + * + * integer_fraction_pattern = integer_pattern + * fraction_pattern? + * + * integer_pattern = regexp([#,]*[0,]*0+) + * + * fraction_pattern = "." regexp(0*[0-9]*#*) + * + * significant_pattern = regexp([#,]*@+#*) + * + * scientific_notation = regexp(E\+?0+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: - + * 3: padding + * 4: (integer_fraction_pattern | significant_pattern) + * 5: integer_fraction_pattern + * 6: integer_pattern + * 7: fraction_pattern + * 8: significant_pattern + * 9: scientific_notation + * 10: suffix + * 11: - + */ +var numberPatternRe = ( /^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/ ); + + + + +/** + * format( number, pattern ) + * + * @number [Number]. + * + * @pattern [String] raw pattern for numbers. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberPatternProperties = function( pattern ) { + var aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern, + maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize, + roundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix; + + pattern = pattern.match( numberPatternRe ); + if ( !pattern ) { + throw new Error( "Invalid pattern: " + pattern ); + } + + prefix = pattern[ 1 ]; + padding = pattern[ 3 ]; + integerFractionOrSignificantPattern = pattern[ 4 ]; + significantPattern = pattern[ 8 ]; + scientificNotation = pattern[ 9 ]; + suffix = pattern[ 10 ]; + + // Significant digit format + if ( significantPattern ) { + significantPattern.replace( /(@+)(#*)/, function( match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) { + minimumSignificantDigits = minimumSignificantDigitsMatch.length; + maximumSignificantDigits = minimumSignificantDigits + + maximumSignificantDigitsMatch.length; + }); + + // Integer and fractional format + } else { + fractionPattern = pattern[ 7 ]; + integerPattern = pattern[ 6 ]; + + if ( fractionPattern ) { + + // Minimum fraction digits, and rounding. + fractionPattern.replace( /[0-9]+/, function( match ) { + minimumFractionDigits = match; + }); + if ( minimumFractionDigits ) { + roundIncrement = +( "0." + minimumFractionDigits ); + minimumFractionDigits = minimumFractionDigits.length; + } else { + minimumFractionDigits = 0; + } + + // Maximum fraction digits + // 1: ignore decimal character + maximumFractionDigits = fractionPattern.length - 1 /* 1 */; + } + + // Minimum integer digits + integerPattern.replace( /0+$/, function( match ) { + minimumIntegerDigits = match.length; + }); + } + + // Scientific notation + if ( scientificNotation ) { + throw createErrorUnsupportedFeature({ + feature: "scientific notation (not implemented)" + }); + } + + // Padding + if ( padding ) { + throw createErrorUnsupportedFeature({ + feature: "padding (not implemented)" + }); + } + + // Grouping + if ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( "," ) ) !== -1 ) { + + // Primary grouping size is the interval between the last group separator and the end of + // the integer (or the end of the significant pattern). + aux2 = integerFractionOrSignificantPattern.split( "." )[ 0 ]; + primaryGroupingSize = aux2.length - aux1 - 1; + + // Secondary grouping size is the interval between the last two group separators. + if ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( ",", aux1 - 1 ) ) !== -1 ) { + secondaryGroupingSize = aux1 - 1 - aux2; + } + } + + // Return: + // 0: @prefix String + // 1: @padding Array [ , ] TODO + // 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer + // digits to be used. Numbers will be padded with leading zeroes if necessary. + // 3: @minimumFractionDigits and + // 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and + // maximum fraction digits to be used. Numbers will be rounded or padded with trailing + // zeroes if necessary. + // 5: @minimumSignificantDigits and + // 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and + // maximum fraction digits to be shown. Either none or both of these properties are + // present; if they are, they override minimum and maximum integer and fraction digits + // – the formatter uses however many integer and fraction digits are required to display + // the specified number of significant digits. + // 7: @roundIncrement Decimal round increment or null + // 8: @primaryGroupingSize + // 9: @secondaryGroupingSize + // 10: @suffix String + return [ + prefix, + padding, + minimumIntegerDigits, + minimumFractionDigits, + maximumFractionDigits, + minimumSignificantDigits, + maximumSignificantDigits, + roundIncrement, + primaryGroupingSize, + secondaryGroupingSize, + suffix + ]; +}; + + + + +/** + * Symbol( name, cldr ) + * + * @name [String] Symbol name. + * + * @cldr [Cldr instance]. + * + * Return the localized symbol given its name. + */ +var numberSymbol = function( name, cldr ) { + return cldr.main([ + "numbers/symbols-numberSystem-" + numberNumberingSystem( cldr ), + name + ]); +}; + + + + +var numberSymbolName = { + ".": "decimal", + ",": "group", + "%": "percentSign", + "+": "plusSign", + "-": "minusSign", + "E": "exponential", + "\u2030": "perMille" +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * ".": "٫", + * ",": "٬", + * "%": "٪", + * ... + * }; + */ +var numberSymbolMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr ); + } + + return symbolMap; +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +/** + * formatProperties( pattern, cldr [, options] ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * @options [Object]: + * - minimumIntegerDigits [Number] + * - minimumFractionDigits, maximumFractionDigits [Number] + * - minimumSignificantDigits, maximumSignificantDigits [Number] + * - round [String] "ceil", "floor", "round" (default), or "truncate". + * - useGrouping [Boolean] default true. + * + * Return the processed properties that will be used in number/format. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormatProperties = function( pattern, cldr, options ) { + var negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern, + properties; + + function getOptions( attribute, propertyIndex ) { + if ( attribute in options ) { + properties[ propertyIndex ] = options[ attribute ]; + } + } + + options = options || {}; + pattern = pattern.split( ";" ); + + positivePattern = pattern[ 0 ]; + + negativePattern = pattern[ 1 ] || "-" + positivePattern; + negativeProperties = numberPatternProperties( negativePattern ); + negativePrefix = negativeProperties[ 0 ]; + negativeSuffix = negativeProperties[ 10 ]; + + properties = numberPatternProperties( positivePattern ).concat([ + positivePattern, + negativePrefix + positivePattern + negativeSuffix, + negativePrefix, + negativeSuffix, + numberRound( options.round ), + numberSymbol( "infinity", cldr ), + numberSymbol( "nan", cldr ), + numberSymbolMap( cldr ), + numberNumberingSystemDigitsMap( cldr ) + ]); + + getOptions( "minimumIntegerDigits", 2 ); + getOptions( "minimumFractionDigits", 3 ); + getOptions( "maximumFractionDigits", 4 ); + getOptions( "minimumSignificantDigits", 5 ); + getOptions( "maximumSignificantDigits", 6 ); + + // Grouping separators + if ( options.useGrouping === false ) { + properties[ 8 ] = null; + } + + // Normalize number of digits if only one of either minimumFractionDigits or + // maximumFractionDigits is passed in as an option + if ( "minimumFractionDigits" in options && !( "maximumFractionDigits" in options ) ) { + + // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits ); + properties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] ); + } else if ( !( "minimumFractionDigits" in options ) && + "maximumFractionDigits" in options ) { + + // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits ); + properties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] ); + } + + // Return: + // 0-10: see number/pattern-properties. + // 11: @positivePattern [String] Positive pattern. + // 12: @negativePattern [String] Negative pattern. + // 13: @negativePrefix [String] Negative prefix. + // 14: @negativeSuffix [String] Negative suffix. + // 15: @round [Function] Round function. + // 16: @infinitySymbol [String] Infinity symbol. + // 17: @nanSymbol [String] NaN symbol. + // 18: @symbolMap [Object] A bunch of other symbols. + // 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`. + return properties; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +/** + * symbolMap( cldr ) + * + * @cldr [Cldr instance]. + * + * Return the (localized symbol, pattern symbol) key value pair, eg. { + * "٫": ".", + * "٬": ",", + * "٪": "%", + * ... + * }; + */ +var numberSymbolInvertedMap = function( cldr ) { + var symbol, + symbolMap = {}; + + for ( symbol in numberSymbolName ) { + symbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol; + } + + return symbolMap; +}; + + + + +/** + * parseProperties( pattern, cldr ) + * + * @pattern [String] raw pattern for numbers. + * + * @cldr [Cldr instance]. + * + * Return parser properties, used to feed parser function. + */ +var numberParseProperties = function( pattern, cldr ) { + var invertedNuDigitsMap, invertedNuDigitsMapSanityCheck, negativePattern, negativeProperties, + nuDigitsMap = numberNumberingSystemDigitsMap( cldr ); + + pattern = pattern.split( ";" ); + negativePattern = pattern[ 1 ] || "-" + pattern[ 0 ]; + negativeProperties = numberPatternProperties( negativePattern ); + if ( nuDigitsMap ) { + invertedNuDigitsMap = nuDigitsMap.split( "" ).reduce(function( object, localizedDigit, i ) { + object[ localizedDigit ] = String( i ); + return object; + }, {} ); + invertedNuDigitsMapSanityCheck = "0123456789".split( "" ).reduce(function( object, digit ) { + object[ digit ] = "invalid"; + return object; + }, {} ); + invertedNuDigitsMap = objectExtend( + invertedNuDigitsMapSanityCheck, + invertedNuDigitsMap + ); + } + + // 0: @infinitySymbol [String] Infinity symbol. + // 1: @invertedSymbolMap [Object] Inverted symbol map augmented with sanity check. + // The sanity check prevents permissive parsing, i.e., it prevents symbols that doesn't + // belong to the localized set to pass through. This is obtained with the result of the + // inverted map object overloading symbol name map object (the remaining symbol name + // mappings will invalidate parsing, working as the sanity check). + // 2: @negativePrefix [String] Negative prefix. + // 3: @negativeSuffix [String] Negative suffix with percent or per mille stripped out. + // 4: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than + // `latn` augmented with sanity check (similar to invertedSymbolMap). + return [ + numberSymbol( "infinity", cldr ), + objectExtend( {}, numberSymbolName, numberSymbolInvertedMap( cldr ) ), + negativeProperties[ 0 ], + negativeProperties[ 10 ].replace( "%", "" ).replace( "\u2030", "" ), + invertedNuDigitsMap + ]; +}; + + + + +/** + * Pattern( style ) + * + * @style [String] "decimal" (default) or "percent". + * + * @cldr [Cldr instance]. + */ +var numberPattern = function( style, cldr ) { + if ( style !== "decimal" && style !== "percent" ) { + throw new Error( "Invalid style" ); + } + + return cldr.main([ + "numbers", + style + "Formats-numberSystem-" + numberNumberingSystem( cldr ), + "standard" + ]); +}; + + + + +function validateDigits( properties ) { + var minimumIntegerDigits = properties[ 2 ], + minimumFractionDigits = properties[ 3 ], + maximumFractionDigits = properties[ 4 ], + minimumSignificantDigits = properties[ 5 ], + maximumSignificantDigits = properties[ 6 ]; + + // Validate significant digit format properties + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + validateParameterRange( minimumSignificantDigits, "minimumSignificantDigits", 1, 21 ); + validateParameterRange( maximumSignificantDigits, "maximumSignificantDigits", + minimumSignificantDigits, 21 ); + + } else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) { + throw new Error( "Neither or both the minimum and maximum significant digits must be " + + "present" ); + + // Validate integer and fractional format + } else { + validateParameterRange( minimumIntegerDigits, "minimumIntegerDigits", 1, 21 ); + validateParameterRange( minimumFractionDigits, "minimumFractionDigits", 0, 20 ); + validateParameterRange( maximumFractionDigits, "maximumFractionDigits", + minimumFractionDigits, 20 ); + } +} + +/** + * .numberFormatter( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * - see also number/format options. + * + * Return a function that formats a number according to the given options and default/instance + * locale. + */ +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + var cldr, pattern, properties; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberFormatProperties( pattern, cldr, options ); + + cldr.off( "get", validateCldr ); + + validateDigits( properties ); + + return function( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + return numberFormat( value, properties ); + }; +}; + +/** + * .numberParser( [options] ) + * + * @options [Object]: + * - style: [String] "decimal" (default) or "percent". + * + * Return the number parser according to the default/instance locale. + */ +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + var cldr, pattern, properties; + + validateParameterTypePlainObject( options, "options" ); + + options = options || {}; + cldr = this.cldr; + + validateDefaultLocale( cldr ); + + cldr.on( "get", validateCldr ); + + if ( options.raw ) { + pattern = options.raw; + } else { + pattern = numberPattern( options.style || "decimal", cldr ); + } + + properties = numberParseProperties( pattern, cldr ); + + cldr.off( "get", validateCldr ); + + return function( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + return numberParse( value, properties ); + }; +}; + +/** + * .formatNumber( value [, options] ) + * + * @value [Number] number to be formatted. + * + * @options [Object]: see number/format-properties. + * + * Format a number according to the given options and default/instance locale. + */ +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +/** + * .parseNumber( value [, options] ) + * + * @value [String] + * + * @options [Object]: See numberParser(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + */ +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +/** + * Optimization to avoid duplicating some internal functions across modules. + */ +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberNumberingSystem = numberNumberingSystem; +Globalize._numberPattern = numberPattern; +Globalize._numberSymbol = numberSymbol; +Globalize._stringPad = stringPad; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +return Globalize; + + + + +})); diff --git a/CS/MVCDashboardDesigner/Scripts/jquery-1.11.3.js b/CS/MVCDashboardDesigner/Scripts/jquery-1.11.3.js new file mode 100644 index 0000000..6feb110 --- /dev/null +++ b/CS/MVCDashboardDesigner/Scripts/jquery-1.11.3.js @@ -0,0 +1,10351 @@ +/*! + * jQuery JavaScript Library v1.11.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-04-28T16:19Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.3", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // 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 just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // 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 ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // 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 ( i === length ) { + 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 plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // 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({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // 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 jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // 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 || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.0-pre + * http://sizzlejs.com/ + * + * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-16 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + nodeType = context.nodeType; + + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + if ( !seed && documentIsHTML ) { + + // Try to shortcut find operations when possible (e.g., not under DocumentFragment) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType !== 1 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.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).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + parent = doc.defaultView; + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Support tests + ---------------------------------------------------------------------- */ + documentIsHTML = !isXML( doc ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "
    " + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // 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: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + 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; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // 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 ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +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 sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "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.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
    a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // 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 to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = 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 = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + col: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "