From 861f4c0addad2e3ddfc8cf85a384925ca2fe1969 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 27 Oct 2021 21:57:03 -0400 Subject: [PATCH 01/32] Initialize and Setup Plugin Source. --- cabal.project | 1 + exe/Plugins.hs | 7 + haskell-language-server.cabal | 13 ++ .../LICENSE | 201 ++++++++++++++++++ .../hls-alternate-number-format-plugin.cabal | 33 +++ .../src/Ide/Plugin/AlternateNumberFormat.hs | 60 ++++++ 6 files changed, 315 insertions(+) create mode 100644 plugins/hls-alternate-number-format-plugin/LICENSE create mode 100644 plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal create mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs diff --git a/cabal.project b/cabal.project index 08c0fbbdd5..18b8a81dc8 100644 --- a/cabal.project +++ b/cabal.project @@ -24,6 +24,7 @@ packages: ./plugins/hls-module-name-plugin ./plugins/hls-ormolu-plugin ./plugins/hls-call-hierarchy-plugin + ./plugins/hls-alternate-number-format-plugin -- Standard location for temporary packages needed for particular environments -- For example it is used in the project gitlab mirror to help in the MAcOS M1 build script diff --git a/exe/Plugins.hs b/exe/Plugins.hs index 5e4a6165d9..8af7b1de21 100644 --- a/exe/Plugins.hs +++ b/exe/Plugins.hs @@ -65,6 +65,10 @@ import Ide.Plugin.Pragmas as Pragmas import Ide.Plugin.Splice as Splice #endif +#if alternateNumberFormat +import Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat +#endif + -- formatters #if floskell @@ -154,6 +158,9 @@ idePlugins includeExamples = pluginDescToIdePlugins allPlugins #endif #if splice Splice.descriptor "splice" : +#endif +#if alternateNumberFormat + AlternateNumberFormat.descriptor "alternateNumberFormat" : #endif -- The ghcide descriptors should come last so that the notification handlers -- (which restart the Shake build) run after everything else diff --git a/haskell-language-server.cabal b/haskell-language-server.cabal index bc12321681..915dd0d33d 100644 --- a/haskell-language-server.cabal +++ b/haskell-language-server.cabal @@ -163,6 +163,11 @@ flag splice default: True manual: True +flag alternateNumberFormat + description: Enable Alternate Number Format plugin + default: True + manual: True + -- formatters flag floskell @@ -260,6 +265,11 @@ common splice build-depends: hls-splice-plugin ^>=1.0.0.1 cpp-options: -Dsplice +common alternateNumberFormat + if flag(alternateNumberFormat) || flag(all-plugins) + build-depends: hls-alternate-number-format-plugin ^>=0.1.0.0 + cpp-options: -DalternateNumberFormat + -- formatters common floskell @@ -304,6 +314,7 @@ executable haskell-language-server , moduleName , pragmas , splice + , alternateNumberFormat , floskell , fourmolu , ormolu @@ -467,6 +478,8 @@ test-suite func-test cpp-options: -Dpragmas if flag(splice) || flag(all-plugins) cpp-options: -Dsplice + if flag(alternateNumberFormat) || flag(all-plugins) + cpp-options: -DalternateNumberFormat -- formatters if flag(floskell) || flag(all-formatters) diff --git a/plugins/hls-alternate-number-format-plugin/LICENSE b/plugins/hls-alternate-number-format-plugin/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal new file mode 100644 index 0000000000..67b759efc3 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -0,0 +1,33 @@ +cabal-version: 2.4 +name: hls-alternate-number-format-plugin +version: 0.1.0.0 +synopsis: Provide Alternate Number Formats plugin for Haskell Language Server +description: + Please see the README on GitHub at + +license: Apache-2.0 +license-file: LICENSE +author: Nick Suchecki +maintainer: nicksuchecki@gmail.com +category: Development +build-type: Simple +extra-source-files: LICENSE + +library + exposed-modules: Ide.Plugin.AlternateNumberFormat + hs-source-dirs: src + build-depends: + aeson + , base >=4.12 && <5 + -- Debug - Containers + , containers + , ghcide + , hls-plugin-api + , hie-compat + , lens + , lsp + , mtl + , hls-retrie-plugin + , text + + default-language: Haskell2010 diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs new file mode 100644 index 0000000000..c987c00058 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -0,0 +1,60 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RecordWildCards #-} +module Ide.Plugin.AlternateNumberFormat where + +import Compat.HieTypes (HieASTs (HieASTs)) +import Control.Lens ((^.)) +import Control.Monad.Except (ExceptT, MonadIO, forM_, liftIO, + runExceptT, throwError) +import Data.Aeson (FromJSON, ToJSON, Value (Null)) +import qualified Data.Map as M +import Data.Text (Text) +import qualified Data.Text as T +import Development.IDE (GetHieAst(GetHieAst), HieAstResult (HAR, hieAst), + IdeState, ideLogger, runAction, + use) +import Development.IDE.GHC.Compat (HieASTs (getAsts), + ) +import Development.IDE.Types.Logger as Logger +import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, + response) +import Ide.Types +import Language.LSP.Types +import Language.LSP.Types.Lens (textDocument, uri) + +descriptor :: PluginId -> PluginDescriptor IdeState +descriptor plId = (defaultPluginDescriptor plId) + { pluginHandlers = mkPluginHandler STextDocumentHover codeActionHandler + , pluginCommands = commands + } + +commands :: [PluginCommand IdeState] +commands = [PluginCommand "alternateNumberFormat" "Provide alternate number formats based on LanguagePragmas and Type" provideFormat] + +newtype AlternateNumberParams = AlternateNumberParams Int + deriving(FromJSON, ToJSON) + +provideFormat :: CommandFunction IdeState AlternateNumberParams +provideFormat _ _ = pure $ Right Null + +codeActionHandler :: PluginMethodHandler IdeState TextDocumentHover +codeActionHandler state plId caParams = response $ do + liftIO $ Logger.logError (ideLogger state) "We are HERE" + nfp <- getNormalizedFilePath caParams + liftIO $ Logger.logError (ideLogger state) (T.pack $ show nfp) + HAR{hieAst} <- getHieAst state nfp + liftIO $ Logger.logError (ideLogger state) "PRE-KEYS" + -- liftIO $ forM_ (M.keys (getAsts hieAst)) (\x -> Logger.logError (ideLogger state) (T.pack $ show x)) + liftIO $ Logger.logError (ideLogger state) "POST-KEYS" + pure Nothing + +getNormalizedFilePath :: Monad m => HoverParams -> ExceptT String m NormalizedFilePath +getNormalizedFilePath caParams = handleMaybe "Error: converting to NormalizedFilePath" + $ uriToNormalizedFilePath + $ toNormalizedUri (caParams ^. (textDocument . uri)) + +getHieAst :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m HieAstResult +getHieAst state = handleMaybeM "Error: Could not get AST" . liftIO . runAction "AlternateNumberFormat.GetHieAst" state . use GetHieAst From dd27587b367c1f86037e795e2377c25502873e75 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 3 Nov 2021 22:55:27 -0400 Subject: [PATCH 02/32] Provide Traversal Module to Haskell AST that collects Literals. --- .../hls-alternate-number-format-plugin.cabal | 8 +- .../src/Ide/Plugin/AlternateNumberFormat.hs | 80 ++-- .../src/Ide/Plugin/Traverse/Literals.hs | 382 ++++++++++++++++++ 3 files changed, 438 insertions(+), 32 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 67b759efc3..cb036d5fb2 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -15,12 +15,11 @@ extra-source-files: LICENSE library exposed-modules: Ide.Plugin.AlternateNumberFormat + other-modules: Ide.Plugin.Traverse.Literals hs-source-dirs: src build-depends: aeson , base >=4.12 && <5 - -- Debug - Containers - , containers , ghcide , hls-plugin-api , hie-compat @@ -31,3 +30,8 @@ library , text default-language: Haskell2010 + default-extensions: + LambdaCase + NamedFieldPuns + OverloadedStrings + RecordWildCards diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index c987c00058..e6c33b9d63 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -1,29 +1,32 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE TypeFamilies #-} + module Ide.Plugin.AlternateNumberFormat where -import Compat.HieTypes (HieASTs (HieASTs)) -import Control.Lens ((^.)) -import Control.Monad.Except (ExceptT, MonadIO, forM_, liftIO, - runExceptT, throwError) -import Data.Aeson (FromJSON, ToJSON, Value (Null)) -import qualified Data.Map as M -import Data.Text (Text) -import qualified Data.Text as T -import Development.IDE (GetHieAst(GetHieAst), HieAstResult (HAR, hieAst), - IdeState, ideLogger, runAction, - use) -import Development.IDE.GHC.Compat (HieASTs (getAsts), - ) -import Development.IDE.Types.Logger as Logger -import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, - response) +import Control.Lens ((^.)) +import Control.Monad.Except (ExceptT, MonadIO, liftIO) +import Data.Aeson (FromJSON, ToJSON, + Value (Null)) +import qualified Data.Text as T +import Development.IDE (GetParsedModuleWithComments (GetParsedModuleWithComments), + IdeState, + TcModuleResult (TcModuleResult, tmrParsed, tmrTypechecked), + TypeCheck (TypeCheck), + ideLogger, runAction, + useWithStale) +import Development.IDE.Core.PositionMapping (PositionMapping) +import Development.IDE.GHC.Compat +import Development.IDE.GHC.Compat.Util (FastString, mkFastString) +import Development.IDE.Types.Logger as Logger +import Ide.Plugin.Retrie (handleMaybe, + handleMaybeM, response) +import Ide.Plugin.Traverse.Literals (collectLiterals, + collectTcLiterals) import Ide.Types import Language.LSP.Types -import Language.LSP.Types.Lens (textDocument, uri) +import Language.LSP.Types.Lens (textDocument, uri) +import Prelude hiding (log) descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId) @@ -40,15 +43,16 @@ newtype AlternateNumberParams = AlternateNumberParams Int provideFormat :: CommandFunction IdeState AlternateNumberParams provideFormat _ _ = pure $ Right Null -codeActionHandler :: PluginMethodHandler IdeState TextDocumentHover -codeActionHandler state plId caParams = response $ do - liftIO $ Logger.logError (ideLogger state) "We are HERE" +codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentHover +codeActionHandler state _ caParams = response $ do + logIO' state "We are HERE" nfp <- getNormalizedFilePath caParams - liftIO $ Logger.logError (ideLogger state) (T.pack $ show nfp) - HAR{hieAst} <- getHieAst state nfp - liftIO $ Logger.logError (ideLogger state) "PRE-KEYS" - -- liftIO $ forM_ (M.keys (getAsts hieAst)) (\x -> Logger.logError (ideLogger state) (T.pack $ show x)) - liftIO $ Logger.logError (ideLogger state) "POST-KEYS" + logIO state nfp + (pm, _) <- getHieAst state nfp + -- (TcModuleResult{..}, _) <- getHieAst state nfp + logIO state (collectLiterals pm) + logIO state $ "File: " <> nfpToFastString nfp + -- logIO state (collectTcLiterals $ tcg_binds tmrTypechecked ) pure Nothing getNormalizedFilePath :: Monad m => HoverParams -> ExceptT String m NormalizedFilePath @@ -56,5 +60,21 @@ getNormalizedFilePath caParams = handleMaybe "Error: converting to NormalizedFil $ uriToNormalizedFilePath $ toNormalizedUri (caParams ^. (textDocument . uri)) -getHieAst :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m HieAstResult -getHieAst state = handleMaybeM "Error: Could not get AST" . liftIO . runAction "AlternateNumberFormat.GetHieAst" state . use GetHieAst +getHieAst :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m (ParsedModule, PositionMapping) +getHieAst state = handleMaybeM "Error: Could not get AST" . liftIO . runAction "AlternateNumberFormat.GetHieAst" state . useWithStale GetParsedModuleWithComments + +nfpToFastString :: NormalizedFilePath -> FastString +nfpToFastString = mkFastString . fromNormalizedFilePath + +logIO :: (MonadIO m, Show a) => IdeState -> a -> m () +logIO state = liftIO . log state + +log :: Show a => IdeState -> a -> IO () +log state = log' state . show + +logIO' :: MonadIO m => IdeState -> String -> m () +logIO' state = liftIO . log' state + +log' :: IdeState -> String -> IO () +log' state = Logger.logError (ideLogger state) . T.pack + diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs new file mode 100644 index 0000000000..3b2e211e5a --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs @@ -0,0 +1,382 @@ +{-# LANGUAGE DerivingVia #-} +{-# LANGUAGE FlexibleInstances #-} +module Ide.Plugin.Traverse.Literals where +import Data.Text (Text) +import qualified Data.Text as T +import Development.IDE.GHC.Compat hiding (text) +import Development.IDE.GHC.Util (unsafePrintSDoc) + +-- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node +-- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or +-- in "Expr Mode" where it's an actual expression +class Traverse a where + traverseTree :: a -> [Text] + +instance Traverse (LHsExpr GhcPs) where + traverseTree = traverseLExpr + +instance Traverse (LHsCmd GhcPs) where + traverseTree = traverseLCmd + +data Literal = UnLoc (HsExpr GhcPs) + | Loc (LHsExpr GhcPs) + +-- | Find all literals in a Parsed Source File +collectLiterals :: ParsedModule -> [Text] +collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc . pm_parsed_source + +collectTcLiterals :: LHsBinds GhcPs -> [Text] +collectTcLiterals = concatMap traverseLBind + +-- must attach GhcPs as further down certain located AST nodes are tagged with XRec +-- GhcPs allows us to "unwrap" this XRec type family +-- | Find all Literals in a Declaration. +traverseLDecl :: LHsDecl GhcPs -> [Text] +traverseLDecl = traverseDecl . unLoc + +traverseDecl :: HsDecl GhcPs -> [Text] +traverseDecl = \case + TyClD _ tcd -> traverseTyClDecl tcd + ValD _ hsBind -> traverseBind hsBind + SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl + -- don't think this is necessary + AnnD _ annDecl -> traverseAnnDecl annDecl + RuleD _ ruleDecl -> traverseRuleDecls ruleDecl + -------------------------------------------------- + _ -> [] + +traverseAnnDecl :: AnnDecl GhcPs -> [Text] +traverseAnnDecl = \case + HsAnnotation _ _ _ expr -> traverseLExpr expr + _ -> [] + +traverseTyClDecl :: TyClDecl GhcPs -> [Text] +traverseTyClDecl = \case + ClassDecl{tcdMeths} -> concatMap traverseLBind tcdMeths + _ -> [] + +traverseSpliceDecl :: SpliceDecl GhcPs -> [Text] +traverseSpliceDecl = \case + SpliceDecl _ splice _ -> traverseLSplice splice + _ -> [] + +traverseRuleDecls :: RuleDecls GhcPs -> [Text] +traverseRuleDecls = \case + HsRules _ _ ruleDecls -> concatMap traverseLRuleDecl ruleDecls + _ -> [] + +traverseLRuleDecl :: LRuleDecl GhcPs -> [Text] +traverseLRuleDecl = traverseRuleDecl . unLoc + +traverseRuleDecl :: RuleDecl GhcPs -> [Text] +traverseRuleDecl = \case + HsRule{..} -> concatMap traverseLExpr [rd_lhs, rd_rhs] + _ -> [] + +traverseLBind :: LHsBindLR idL GhcPs -> [Text] +traverseLBind = traverseBind . unLoc + +traverseBind :: HsBindLR idL GhcPs -> [Text] +traverseBind = \case + FunBind{fun_matches} -> traverseMatchGroup fun_matches + VarBind{var_rhs} -> traverseLExpr var_rhs + _ -> [] + +traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Text] +traverseMatchGroup = \case + MG _ matches _ -> concatMap traverseLMatch $ unLoc matches + _ -> [] + +traverseLExpr :: LHsExpr GhcPs -> [Text] +traverseLExpr = traverseExpr . unLoc + +traverseExpr :: HsExpr GhcPs -> [Text] +-- traverseExpr self@(L _ hsExpr) = case hsExpr of +traverseExpr = \case + HsOverLit _ overLit -> [overLitToString overLit] -- ["OVERLOADED LITERAL" | isNumericOverLit overLit] + HsLit _ lit -> [literalToString lit] -- ["LITERAL" | isNumericLiteral lit] + HsLam _ group -> traverseMatchGroup group + HsLamCase _ group -> traverseMatchGroup group + HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + HsAppType _ expr _ -> traverseLExpr expr + OpApp _ expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] + NegApp _ expr _ -> traverseLExpr expr + HsPar _ expr -> traverseLExpr expr + SectionL _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + SectionR _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + ExplicitTuple _ args _ -> concatMap traverseLTuple args + ExplicitSum _ _ _ expr -> traverseLExpr expr + HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group + HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] traverseSynExpr sexpr + HsMultiIf _ grhss -> concatMap traverseLGRHS grhss + HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr + HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) + ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] traverseSynExpr sexpr + RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds + RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds + ExprWithTySig _ expr _ -> traverseLExpr expr + ArithSeq _ sexpr seqInfo -> maybe [] traverseSynExpr sexpr <> traverseArithSeqInfo seqInfo + HsSCC _ _ _ expr -> traverseLExpr expr + HsCoreAnn _ _ _ expr -> traverseLExpr expr + HsBracket _ brackets -> traverseBrackets brackets + HsSpliceE _ splice -> traverseSplice splice + HsProc _ _ cmdTop -> traverseLCmdTop cmdTop + HsStatic _ expr -> traverseLExpr expr + HsTick _ _ expr -> traverseLExpr expr + HsBinTick _ _ _ expr -> traverseLExpr expr + HsTickPragma _ _ _ _ expr -> traverseLExpr expr + HsWrap _ _ expr -> traverseExpr expr + _ -> [] + +traverseLCmdTop :: LHsCmdTop GhcPs -> [Text] +traverseLCmdTop = traverseCmdTop . unLoc + +traverseCmdTop :: HsCmdTop GhcPs -> [Text] +traverseCmdTop = \case + HsCmdTop _ cmds -> traverseLCmd cmds + _ -> [] + +traverseLCmd :: LHsCmd GhcPs -> [Text] +traverseLCmd = traverseCmd . unLoc + +traverseCmd :: HsCmd GhcPs -> [Text] +traverseCmd = \case + HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] + HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops + HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr + HsCmdLam _ group -> traverseMatchGroup group + HsCmdPar _ cmd -> traverseLCmd cmd + HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group + HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] traverseSynExpr sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] + HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd + HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) + HsCmdWrap _ _ cmd -> traverseCmd cmd + _ -> [] + +traverseBrackets :: HsBracket GhcPs -> [Text] +traverseBrackets = \case + ExpBr _ expr -> traverseLExpr expr + PatBr _ lpat -> traverseLPat lpat + DecBrL _ decls -> concatMap traverseLDecl decls + DecBrG _ hsGroup -> traverseHsGroup hsGroup + TExpBr _ expr -> traverseLExpr expr + _ -> [] + + +traverseHsGroup :: HsGroup GhcPs -> [Text] +traverseHsGroup = \case + HsGroup{hs_valds} -> case hs_valds of + ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds + _ -> [] + _ -> [] + +traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Text] +traverseArithSeqInfo = \case + From expr -> traverseLExpr expr + FromThen expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + FromTo expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + FromThenTo expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] + +traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Text] +traverseLRecordUpdate = traverseRecordUpdate . unLoc + +traverseRecordUpdate :: HsRecUpdField GhcPs -> [Text] +traverseRecordUpdate HsRecField{..} = traverseLExpr hsRecFieldArg + +traverseRecordBinds :: HsRecordBinds GhcPs -> [Text] +traverseRecordBinds HsRecFields{..} = concatMap traverseLRecordField rec_flds + +traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Text] +traverseLRecordField = traverseRecordField . unLoc + +traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Text] +traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg + +-- | Traverse LStmt to pull out all Located HsLiteral +traverseLStmt :: Traverse p => LStmt GhcPs p -> [Text] +traverseLStmt = traverseStmt . unLoc + +traverseStmt :: Traverse p => Stmt GhcPs p -> [Text] +traverseStmt = \case + LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sexpr + BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap traverseSynExpr [sexpr1, sexpr2] + ApplicativeStmt _ appPairs sexpr -> concatMap traverseAppPair appPairs <> maybe [] traverseSynExpr sexpr + BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 + LetStmt _ locBinds -> traverseLLocalBinds locBinds + ParStmt _ parStmts expr sexpr -> concatMap traverseParStmtBlock parStmts <> traverseExpr expr <> traverseSynExpr sexpr + TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using + <> maybe [] traverseLExpr trS_by <> traverseExpr trS_fmap + <> concatMap traverseSynExpr [trS_ret, trS_bind] + RecStmt{..} -> concatMap traverseLStmt recS_stmts + <> concatMap traverseSynExpr [recS_bind_fn, recS_ret_fn, recS_mfix_fn] + _ -> [] + +traverseParStmtBlock :: ParStmtBlock GhcPs GhcPs -> [Text] +traverseParStmtBlock = \case + ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sexpr + _ -> [] + +traverseAppPair :: (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Text] +traverseAppPair (sexpr, appArg) = traverseSynExpr sexpr <> traverseAppArg appArg + +-- | Traverse ApplicativeArgs to pull out all Located HsLiteral +traverseAppArg :: ApplicativeArg GhcPs -> [Text] +traverseAppArg = \case + ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr fail_operator + ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr final_expr <> traverseLPat bv_pattern + _ -> [] + +-- | Traverse Tuple Arguments to pull out all located HsLiterals +traverseLTuple :: LHsTupArg GhcPs -> [Text] +traverseLTuple = traverseTuple . unLoc + +traverseTuple :: HsTupArg GhcPs -> [Text] +traverseTuple = \case + Present _ expr -> traverseLExpr expr + _ -> [] + +-- | Traverse a Match to pull out all Located HsLiterals +traverseLMatch :: Traverse p => LMatch GhcPs p -> [Text] +traverseLMatch = traverseMatch . unLoc + +traverseMatch :: Traverse p => Match GhcPs p -> [Text] +traverseMatch = \case + Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss + _ -> [] + +-- | Traverses a Pattern pulling out all Located HsLiterals +traverseLPat :: LPat GhcPs -> [Text] +traverseLPat = traversePat . unLoc + +traversePat :: Pat GhcPs -> [Text] +-- traversePat (L _ pat) = case pat of +traversePat = \case + LazyPat _ lpat -> traverseLPat lpat + AsPat _ _ lpat -> traverseLPat lpat + ParPat _ lpat -> traverseLPat lpat + -- TODO: Do we bother with patterns like this? BangPatterns will never have literals + BangPat _ lpat -> traverseLPat lpat + ListPat _ lpats -> concatMap traverseLPat lpats + TuplePat _ lpats _ -> concatMap traverseLPat lpats + SumPat _ lpat _ _ -> traverseLPat lpat + -- ConPat replaced these two in at least ghc-9.2.1 lib + ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) + ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) + ------------------------------------------------------------------- + ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat + SplicePat _ splice -> traverseSplice splice + LitPat _ lit -> ["LITERAL - LITPAT", literalToString lit] -- ["NUMERIC LITERAL - LITPAT" | isNumericLiteral lit] + -- NPat _ overLit sexpr1 sexpr2 -> ["OVERLOADED LIT - NPAT" | isNumericOverLit $ unLoc overLit] <> maybe [] traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 + NPat _ overLit sexpr1 sexpr2 -> ["OVERLOADED LIT - NPAT", overLitToString $ unLoc overLit] <> maybe [] traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 + -- NPlusKPat _ _ lOverLit overLit sexpr1 sexpr2 -> ["LOC OVERLOADED LIT ONE - NPLUSKPAT" | isNumericOverLit $ unLoc lOverLit ] + -- <> ["OVERLOADED LIT TWO - NPLUSKPAT" | isNumericOverLit overLit] + -- <> traverseSynExpr sexpr1 + -- <> traverseSynExpr sexpr2 + NPlusKPat _ _ lOverLit overLit sexpr1 sexpr2 -> ["LOC OVERLOADED LIT ONE - NPLUSKPAT", overLitToString $ unLoc lOverLit ] + <> ["OVERLOADED LIT TWO - NPLUSKPAT", overLitToString overLit] + <> traverseSynExpr sexpr1 + <> traverseSynExpr sexpr2 + SigPat _ lpat _ -> traverseLPat lpat + CoPat _ _ pat _ -> traversePat pat + _ -> [] + + +traverseLSplice :: Located (HsSplice GhcPs) -> [Text] +traverseLSplice = traverseSplice . unLoc + +-- | Traverse a Splice to pull out Located HsLiterals +traverseSplice :: HsSplice GhcPs -> [Text] +traverseSplice = \case + HsTypedSplice _ _ _ expr -> traverseLExpr expr + HsUntypedSplice _ _ _ expr -> traverseLExpr expr + HsSpliced _ _ st -> case st of + HsSplicedExpr expr -> traverseExpr expr + HsSplicedPat pat -> traversePat pat + _ ->[] + _ -> [] + +-- | Traverse a List of GRHS to pull out Located HsLiterals +traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Text] +traverseGRHSs = \case + GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds + _ -> [] + +-- | Traverse a GRHS to pull out Located HsLiterals +traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Text] +traverseLGRHS = traverseGRHS . unLoc + +traverseGRHS :: Traverse p => GRHS GhcPs p -> [Text] +traverseGRHS = \case + GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards + _ -> [] + +traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Text] +traverseLLocalBinds = traverseLocalBinds . unLoc + +traverseLocalBinds :: HsLocalBinds GhcPs -> [Text] +traverseLocalBinds = \case + HsValBinds _ valBinds -> traverseValBinds valBinds + _ -> [] + +traverseValBinds :: HsValBindsLR idL GhcPs -> [Text] +traverseValBinds = \case + ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds + _ -> [] + +traverseSynExpr :: SyntaxExpr GhcPs -> [Text] +traverseSynExpr SyntaxExpr{syn_expr} = traverseExpr syn_expr + +-- Ignore non-numerics +isNumericLiteral :: HsLit p -> Bool +isNumericLiteral = \case + HsChar _ _ -> False + HsCharPrim _ _ -> False + HsString _ _ -> False + HsStringPrim _ _ -> False + _ -> True + +isNumericOverLit :: HsOverLit p -> Bool +isNumericOverLit = \case + OverLit{ol_val} -> isNumericOverLit' ol_val + _ -> False + +-- only a single non-numeric literal +isNumericOverLit' :: OverLitVal -> Bool +isNumericOverLit' = \case + HsIsString _ _ -> False + _ -> True + +-- mostly for debugging purposes +literalToString :: HsLit p -> Text +literalToString = \case + HsChar _ c -> "Char: " <> text c + HsCharPrim _ c -> "CharPrim: " <> text c + HsString _ fs -> "String: " <> text fs + HsStringPrim _ bs -> "StringPrim: " <> text bs + HsInt _ il -> "Int: " <> text il + HsIntPrim _ n -> "IntPrim: " <> text n + HsWordPrim _ n -> "WordPrim: " <> text n + HsInt64Prim _ n -> "Int64Prim: " <> text n + HsWord64Prim _ n -> "Word64Prim: " <> text n + HsInteger _ n ty -> "Integer: " <> text n <> " Type: " <> tyToText ty + HsRat _ fl ty -> "Rat: " <> text fl <> " Type: " <> tyToText ty + HsFloatPrim _ fl -> "FloatPrim: " <> text fl + HsDoublePrim _ fl -> "DoublePrim: " <> text fl + _ -> "XHsLit" + where + text :: Show a => a -> Text + text = T.pack . show + + tyToText :: Type -> Text + tyToText = T.pack . unsafePrintSDoc . ppr + +overLitToString :: HsOverLit GhcPs -> Text +overLitToString = \case + OverLit _ olv he -> (T.concat $ traverseExpr he) <> (case olv of + HsIntegral il -> case il of { IL st b n -> "IntegralOverLit: " <> text n } + HsFractional fl -> case fl of { FL st b ra -> "RationalOverLit: " <> text ra } + HsIsString st fs -> "HIsString: " <> text fs) + _ -> "XOverLit" + where + text :: Show a => a -> Text + text = T.pack . show From 6e0ce9d8c528a64d758d4bdaff78b0c89d51b68d Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Thu, 4 Nov 2021 21:54:05 -0400 Subject: [PATCH 03/32] Change Literals module to return type. Update our parsing module to return the data type we will use in our plugin. The datatype: Literal Constructors: Overloaded - Contains an overloaded literal with a SrcSpan NonOverloaded - Contains non-overloaded literals with a SrcSpan NoLocation - currently unused. This data type is bound to change. This module is designed to capture ALL numeric literals for use in the plugin. When parsing Haskell source tree, certain cases result in getting a plain `Expr`. This means it is not annotated with a SrcSpan. As a result, we pass along a SrcSpan through most functions to keep track of the most recent SrcSpan encountered. This isn't a fool proof plan and may be removed in the future. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 4 +- .../src/Ide/Plugin/Traverse/Literals.hs | 384 +++++++++--------- 2 files changed, 189 insertions(+), 199 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index e6c33b9d63..ed5f6f71bc 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -21,8 +21,8 @@ import Development.IDE.GHC.Compat.Util (FastString, mkFastString) import Development.IDE.Types.Logger as Logger import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, response) -import Ide.Plugin.Traverse.Literals (collectLiterals, - collectTcLiterals) +import Ide.Plugin.Traverse.Literals (collectLiterals + ) import Ide.Types import Language.LSP.Types import Language.LSP.Types.Lens (textDocument, uri) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs index 3b2e211e5a..8c60116650 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs @@ -10,7 +10,7 @@ import Development.IDE.GHC.Util (unsafePrintSDoc) -- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or -- in "Expr Mode" where it's an actual expression class Traverse a where - traverseTree :: a -> [Text] + traverseTree :: a -> [Literal] instance Traverse (LHsExpr GhcPs) where traverseTree = traverseLExpr @@ -18,24 +18,27 @@ instance Traverse (LHsExpr GhcPs) where instance Traverse (LHsCmd GhcPs) where traverseTree = traverseLCmd -data Literal = UnLoc (HsExpr GhcPs) - | Loc (LHsExpr GhcPs) +data Literal = Overloaded SrcSpan (HsOverLit GhcPs) + | NonOverloaded SrcSpan (HsLit GhcPs) + | NoLocation Literal -- Unused + +instance Show Literal where + show = \case + Overloaded ss hol -> "SourceLoc: " <> show ss <> " - " <> overLitToString hol + NonOverloaded ss hl -> "SourceLoc: " <> show ss <> " - " <> literalToString hl + NoLocation lit -> "NoLocation ---> " <> show lit -- | Find all literals in a Parsed Source File -collectLiterals :: ParsedModule -> [Text] +collectLiterals :: ParsedModule -> [Literal] collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc . pm_parsed_source -collectTcLiterals :: LHsBinds GhcPs -> [Text] -collectTcLiterals = concatMap traverseLBind - --- must attach GhcPs as further down certain located AST nodes are tagged with XRec --- GhcPs allows us to "unwrap" this XRec type family +----------------------------------------- DECLARATIONS ----------------------------------------- -- | Find all Literals in a Declaration. -traverseLDecl :: LHsDecl GhcPs -> [Text] -traverseLDecl = traverseDecl . unLoc +traverseLDecl :: LHsDecl GhcPs -> [Literal] +traverseLDecl (L span decls) = traverseDecl span decls -traverseDecl :: HsDecl GhcPs -> [Text] -traverseDecl = \case +traverseDecl :: SrcSpan -> HsDecl GhcPs -> [Literal] +traverseDecl span = \case TyClD _ tcd -> traverseTyClDecl tcd ValD _ hsBind -> traverseBind hsBind SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl @@ -45,56 +48,144 @@ traverseDecl = \case -------------------------------------------------- _ -> [] -traverseAnnDecl :: AnnDecl GhcPs -> [Text] -traverseAnnDecl = \case - HsAnnotation _ _ _ expr -> traverseLExpr expr - _ -> [] - -traverseTyClDecl :: TyClDecl GhcPs -> [Text] +traverseTyClDecl :: TyClDecl GhcPs -> [Literal] traverseTyClDecl = \case ClassDecl{tcdMeths} -> concatMap traverseLBind tcdMeths _ -> [] -traverseSpliceDecl :: SpliceDecl GhcPs -> [Text] +traverseAnnDecl :: AnnDecl GhcPs -> [Literal] +traverseAnnDecl = \case + HsAnnotation _ _ _ expr -> traverseLExpr expr + _ -> [] + +traverseSpliceDecl :: SpliceDecl GhcPs -> [Literal] traverseSpliceDecl = \case SpliceDecl _ splice _ -> traverseLSplice splice _ -> [] -traverseRuleDecls :: RuleDecls GhcPs -> [Text] +traverseRuleDecls :: RuleDecls GhcPs -> [Literal] traverseRuleDecls = \case HsRules _ _ ruleDecls -> concatMap traverseLRuleDecl ruleDecls _ -> [] -traverseLRuleDecl :: LRuleDecl GhcPs -> [Text] +traverseLRuleDecl :: LRuleDecl GhcPs -> [Literal] traverseLRuleDecl = traverseRuleDecl . unLoc -traverseRuleDecl :: RuleDecl GhcPs -> [Text] +traverseRuleDecl :: RuleDecl GhcPs -> [Literal] traverseRuleDecl = \case HsRule{..} -> concatMap traverseLExpr [rd_lhs, rd_rhs] _ -> [] +---------------------------------------------------------------------------------- -traverseLBind :: LHsBindLR idL GhcPs -> [Text] +traverseLBind :: LHsBindLR idL GhcPs -> [Literal] traverseLBind = traverseBind . unLoc -traverseBind :: HsBindLR idL GhcPs -> [Text] +traverseBind :: HsBindLR idL GhcPs -> [Literal] traverseBind = \case FunBind{fun_matches} -> traverseMatchGroup fun_matches VarBind{var_rhs} -> traverseLExpr var_rhs _ -> [] -traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Text] +traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Literal] traverseMatchGroup = \case MG _ matches _ -> concatMap traverseLMatch $ unLoc matches _ -> [] -traverseLExpr :: LHsExpr GhcPs -> [Text] -traverseLExpr = traverseExpr . unLoc +traverseLMatch :: Traverse p => LMatch GhcPs p -> [Literal] +traverseLMatch = traverseMatch . unLoc + +traverseMatch :: Traverse p => Match GhcPs p -> [Literal] +traverseMatch = \case + Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss + _ -> [] + +traverseLPat :: LPat GhcPs -> [Literal] +traverseLPat (L span pat) = traversePat span pat + +traversePat :: SrcSpan -> Pat GhcPs -> [Literal] +traversePat span = \case + LazyPat _ lpat -> traverseLPat lpat + AsPat _ _ lpat -> traverseLPat lpat + ParPat _ lpat -> traverseLPat lpat + -- TODO: Do we bother with patterns like this? BangPatterns will never have literals + BangPat _ lpat -> traverseLPat lpat + ListPat _ lpats -> concatMap traverseLPat lpats + TuplePat _ lpats _ -> concatMap traverseLPat lpats + SumPat _ lpat _ _ -> traverseLPat lpat + -- ConPat replaced these two in at least ghc-9.2.1 lib + ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) + ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) + ------------------------------------------------------------------- + ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat + SplicePat _ splice -> traverseSplice span splice + LitPat _ lit -> getLiteral span lit + NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteral olSpan overLit + <> maybe [] (traverseSynExpr span) sexpr1 + <> traverseSynExpr span sexpr2 + NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteral olSpan loverLit + <> getOverLiteral span overLit + <> traverseSynExpr span sexpr1 + <> traverseSynExpr span sexpr2 + SigPat _ lpat _ -> traverseLPat lpat + CoPat _ _ pat _ -> traversePat span pat + _ -> [] + +traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Literal] +traverseGRHSs = \case + GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds + _ -> [] + +traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Literal] +traverseLGRHS = traverseGRHS . unLoc + +traverseGRHS :: Traverse p => GRHS GhcPs p -> [Literal] +traverseGRHS = \case + GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards + _ -> [] + +traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Literal] +traverseLLocalBinds = traverseLocalBinds . unLoc + +traverseLocalBinds :: HsLocalBinds GhcPs -> [Literal] +traverseLocalBinds = \case + HsValBinds _ valBinds -> traverseValBinds valBinds + _ -> [] + +traverseValBinds :: HsValBindsLR idL GhcPs -> [Literal] +traverseValBinds = \case + ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds + _ -> [] + +traverseLStmt :: Traverse p => LStmt GhcPs p -> [Literal] +traverseLStmt (L span stmt) = traverseStmt span stmt + +traverseStmt :: Traverse p => SrcSpan -> Stmt GhcPs p -> [Literal] +traverseStmt span = \case + LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr span sexpr + BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr span) [sexpr1, sexpr2] + ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair span) appPairs <> maybe [] (traverseSynExpr span) sexpr + BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr span sexpr1 <> traverseSynExpr span sexpr2 + LetStmt _ locBinds -> traverseLLocalBinds locBinds + ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock span) parStmts <> traverseExpr span expr <> traverseSynExpr span sexpr + TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using + <> maybe [] traverseLExpr trS_by <> traverseExpr span trS_fmap + <> concatMap (traverseSynExpr span) [trS_ret, trS_bind] + RecStmt{..} -> concatMap traverseLStmt recS_stmts + <> concatMap (traverseSynExpr span) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] + _ -> [] + +traverseParStmtBlock :: SrcSpan -> ParStmtBlock GhcPs GhcPs -> [Literal] +traverseParStmtBlock span = \case + ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr span sexpr + _ -> [] + +traverseLExpr :: LHsExpr GhcPs -> [Literal] +traverseLExpr (L span hsExpr) = traverseExpr span hsExpr -traverseExpr :: HsExpr GhcPs -> [Text] --- traverseExpr self@(L _ hsExpr) = case hsExpr of -traverseExpr = \case - HsOverLit _ overLit -> [overLitToString overLit] -- ["OVERLOADED LITERAL" | isNumericOverLit overLit] - HsLit _ lit -> [literalToString lit] -- ["LITERAL" | isNumericLiteral lit] +traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] +traverseExpr span = \case + HsOverLit _ overLit -> [Overloaded span overLit | isNumericOverLit overLit] + HsLit _ lit -> [NonOverloaded span lit | isNumericLiteral lit] HsLam _ group -> traverseMatchGroup group HsLamCase _ group -> traverseMatchGroup group HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] @@ -107,53 +198,53 @@ traverseExpr = \case ExplicitTuple _ args _ -> concatMap traverseLTuple args ExplicitSum _ _ _ expr -> traverseLExpr expr HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group - HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] traverseSynExpr sexpr + HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr span) sexpr HsMultiIf _ grhss -> concatMap traverseLGRHS grhss HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) - ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] traverseSynExpr sexpr + ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr span) sexpr RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds ExprWithTySig _ expr _ -> traverseLExpr expr - ArithSeq _ sexpr seqInfo -> maybe [] traverseSynExpr sexpr <> traverseArithSeqInfo seqInfo + ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr span) sexpr <> traverseArithSeqInfo seqInfo HsSCC _ _ _ expr -> traverseLExpr expr HsCoreAnn _ _ _ expr -> traverseLExpr expr HsBracket _ brackets -> traverseBrackets brackets - HsSpliceE _ splice -> traverseSplice splice + HsSpliceE _ splice -> traverseSplice span splice HsProc _ _ cmdTop -> traverseLCmdTop cmdTop HsStatic _ expr -> traverseLExpr expr HsTick _ _ expr -> traverseLExpr expr HsBinTick _ _ _ expr -> traverseLExpr expr HsTickPragma _ _ _ _ expr -> traverseLExpr expr - HsWrap _ _ expr -> traverseExpr expr + HsWrap _ _ expr -> traverseExpr span expr _ -> [] -traverseLCmdTop :: LHsCmdTop GhcPs -> [Text] +traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] traverseLCmdTop = traverseCmdTop . unLoc -traverseCmdTop :: HsCmdTop GhcPs -> [Text] +traverseCmdTop :: HsCmdTop GhcPs -> [Literal] traverseCmdTop = \case HsCmdTop _ cmds -> traverseLCmd cmds _ -> [] -traverseLCmd :: LHsCmd GhcPs -> [Text] -traverseLCmd = traverseCmd . unLoc +traverseLCmd :: LHsCmd GhcPs -> [Literal] +traverseLCmd (L span cmd) = traverseCmd span cmd -traverseCmd :: HsCmd GhcPs -> [Text] -traverseCmd = \case +traverseCmd :: SrcSpan -> HsCmd GhcPs -> [Literal] +traverseCmd span = \case HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr HsCmdLam _ group -> traverseMatchGroup group HsCmdPar _ cmd -> traverseLCmd cmd HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group - HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] traverseSynExpr sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] + HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr span) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) - HsCmdWrap _ _ cmd -> traverseCmd cmd + HsCmdWrap _ _ cmd -> traverseCmd span cmd _ -> [] -traverseBrackets :: HsBracket GhcPs -> [Text] +traverseBrackets :: HsBracket GhcPs -> [Literal] traverseBrackets = \case ExpBr _ expr -> traverseLExpr expr PatBr _ lpat -> traverseLPat lpat @@ -162,169 +253,74 @@ traverseBrackets = \case TExpBr _ expr -> traverseLExpr expr _ -> [] - -traverseHsGroup :: HsGroup GhcPs -> [Text] +traverseHsGroup :: HsGroup GhcPs -> [Literal] traverseHsGroup = \case HsGroup{hs_valds} -> case hs_valds of ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds _ -> [] _ -> [] -traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Text] +traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Literal] traverseArithSeqInfo = \case From expr -> traverseLExpr expr FromThen expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] FromTo expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] FromThenTo expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] -traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Text] +traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Literal] traverseLRecordUpdate = traverseRecordUpdate . unLoc -traverseRecordUpdate :: HsRecUpdField GhcPs -> [Text] +traverseRecordUpdate :: HsRecUpdField GhcPs -> [Literal] traverseRecordUpdate HsRecField{..} = traverseLExpr hsRecFieldArg -traverseRecordBinds :: HsRecordBinds GhcPs -> [Text] +traverseRecordBinds :: HsRecordBinds GhcPs -> [Literal] traverseRecordBinds HsRecFields{..} = concatMap traverseLRecordField rec_flds -traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Text] +traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Literal] traverseLRecordField = traverseRecordField . unLoc -traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Text] +traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Literal] traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg --- | Traverse LStmt to pull out all Located HsLiteral -traverseLStmt :: Traverse p => LStmt GhcPs p -> [Text] -traverseLStmt = traverseStmt . unLoc - -traverseStmt :: Traverse p => Stmt GhcPs p -> [Text] -traverseStmt = \case - LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sexpr - BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap traverseSynExpr [sexpr1, sexpr2] - ApplicativeStmt _ appPairs sexpr -> concatMap traverseAppPair appPairs <> maybe [] traverseSynExpr sexpr - BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 - LetStmt _ locBinds -> traverseLLocalBinds locBinds - ParStmt _ parStmts expr sexpr -> concatMap traverseParStmtBlock parStmts <> traverseExpr expr <> traverseSynExpr sexpr - TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using - <> maybe [] traverseLExpr trS_by <> traverseExpr trS_fmap - <> concatMap traverseSynExpr [trS_ret, trS_bind] - RecStmt{..} -> concatMap traverseLStmt recS_stmts - <> concatMap traverseSynExpr [recS_bind_fn, recS_ret_fn, recS_mfix_fn] - _ -> [] - -traverseParStmtBlock :: ParStmtBlock GhcPs GhcPs -> [Text] -traverseParStmtBlock = \case - ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sexpr - _ -> [] - -traverseAppPair :: (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Text] -traverseAppPair (sexpr, appArg) = traverseSynExpr sexpr <> traverseAppArg appArg +traverseAppPair :: SrcSpan -> (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Literal] +traverseAppPair span (sexpr, appArg) = traverseSynExpr span sexpr <> traverseAppArg span appArg --- | Traverse ApplicativeArgs to pull out all Located HsLiteral -traverseAppArg :: ApplicativeArg GhcPs -> [Text] -traverseAppArg = \case - ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr fail_operator - ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr final_expr <> traverseLPat bv_pattern +traverseAppArg :: SrcSpan -> ApplicativeArg GhcPs -> [Literal] +traverseAppArg span = \case + ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr span fail_operator + ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr span final_expr <> traverseLPat bv_pattern _ -> [] --- | Traverse Tuple Arguments to pull out all located HsLiterals -traverseLTuple :: LHsTupArg GhcPs -> [Text] +traverseLTuple :: LHsTupArg GhcPs -> [Literal] traverseLTuple = traverseTuple . unLoc -traverseTuple :: HsTupArg GhcPs -> [Text] +traverseTuple :: HsTupArg GhcPs -> [Literal] traverseTuple = \case Present _ expr -> traverseLExpr expr _ -> [] --- | Traverse a Match to pull out all Located HsLiterals -traverseLMatch :: Traverse p => LMatch GhcPs p -> [Text] -traverseLMatch = traverseMatch . unLoc +traverseLSplice :: Located (HsSplice GhcPs) -> [Literal] +traverseLSplice (L span splice) = traverseSplice span splice -traverseMatch :: Traverse p => Match GhcPs p -> [Text] -traverseMatch = \case - Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss - _ -> [] - --- | Traverses a Pattern pulling out all Located HsLiterals -traverseLPat :: LPat GhcPs -> [Text] -traverseLPat = traversePat . unLoc - -traversePat :: Pat GhcPs -> [Text] --- traversePat (L _ pat) = case pat of -traversePat = \case - LazyPat _ lpat -> traverseLPat lpat - AsPat _ _ lpat -> traverseLPat lpat - ParPat _ lpat -> traverseLPat lpat - -- TODO: Do we bother with patterns like this? BangPatterns will never have literals - BangPat _ lpat -> traverseLPat lpat - ListPat _ lpats -> concatMap traverseLPat lpats - TuplePat _ lpats _ -> concatMap traverseLPat lpats - SumPat _ lpat _ _ -> traverseLPat lpat - -- ConPat replaced these two in at least ghc-9.2.1 lib - ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) - ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) - ------------------------------------------------------------------- - ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat - SplicePat _ splice -> traverseSplice splice - LitPat _ lit -> ["LITERAL - LITPAT", literalToString lit] -- ["NUMERIC LITERAL - LITPAT" | isNumericLiteral lit] - -- NPat _ overLit sexpr1 sexpr2 -> ["OVERLOADED LIT - NPAT" | isNumericOverLit $ unLoc overLit] <> maybe [] traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 - NPat _ overLit sexpr1 sexpr2 -> ["OVERLOADED LIT - NPAT", overLitToString $ unLoc overLit] <> maybe [] traverseSynExpr sexpr1 <> traverseSynExpr sexpr2 - -- NPlusKPat _ _ lOverLit overLit sexpr1 sexpr2 -> ["LOC OVERLOADED LIT ONE - NPLUSKPAT" | isNumericOverLit $ unLoc lOverLit ] - -- <> ["OVERLOADED LIT TWO - NPLUSKPAT" | isNumericOverLit overLit] - -- <> traverseSynExpr sexpr1 - -- <> traverseSynExpr sexpr2 - NPlusKPat _ _ lOverLit overLit sexpr1 sexpr2 -> ["LOC OVERLOADED LIT ONE - NPLUSKPAT", overLitToString $ unLoc lOverLit ] - <> ["OVERLOADED LIT TWO - NPLUSKPAT", overLitToString overLit] - <> traverseSynExpr sexpr1 - <> traverseSynExpr sexpr2 - SigPat _ lpat _ -> traverseLPat lpat - CoPat _ _ pat _ -> traversePat pat - _ -> [] - - -traverseLSplice :: Located (HsSplice GhcPs) -> [Text] -traverseLSplice = traverseSplice . unLoc - --- | Traverse a Splice to pull out Located HsLiterals -traverseSplice :: HsSplice GhcPs -> [Text] -traverseSplice = \case +traverseSplice :: SrcSpan -> HsSplice GhcPs -> [Literal] +traverseSplice span = \case HsTypedSplice _ _ _ expr -> traverseLExpr expr HsUntypedSplice _ _ _ expr -> traverseLExpr expr HsSpliced _ _ st -> case st of - HsSplicedExpr expr -> traverseExpr expr - HsSplicedPat pat -> traversePat pat + HsSplicedExpr expr -> traverseExpr span expr + HsSplicedPat pat -> traversePat span pat _ ->[] _ -> [] --- | Traverse a List of GRHS to pull out Located HsLiterals -traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Text] -traverseGRHSs = \case - GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds - _ -> [] +traverseSynExpr :: SrcSpan -> SyntaxExpr GhcPs -> [Literal] +traverseSynExpr span SyntaxExpr{syn_expr} = traverseExpr span syn_expr --- | Traverse a GRHS to pull out Located HsLiterals -traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Text] -traverseLGRHS = traverseGRHS . unLoc +-- Translate from Hs Type to our Literal type +getLiteral :: SrcSpan -> HsLit GhcPs -> [Literal] +getLiteral span lit = [NonOverloaded span lit | isNumericLiteral lit] -traverseGRHS :: Traverse p => GRHS GhcPs p -> [Text] -traverseGRHS = \case - GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards - _ -> [] - -traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Text] -traverseLLocalBinds = traverseLocalBinds . unLoc - -traverseLocalBinds :: HsLocalBinds GhcPs -> [Text] -traverseLocalBinds = \case - HsValBinds _ valBinds -> traverseValBinds valBinds - _ -> [] - -traverseValBinds :: HsValBindsLR idL GhcPs -> [Text] -traverseValBinds = \case - ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds - _ -> [] - -traverseSynExpr :: SyntaxExpr GhcPs -> [Text] -traverseSynExpr SyntaxExpr{syn_expr} = traverseExpr syn_expr +getOverLiteral :: SrcSpan -> HsOverLit GhcPs -> [Literal] +getOverLiteral span lit = [Overloaded span lit | isNumericOverLit lit] -- Ignore non-numerics isNumericLiteral :: HsLit p -> Bool @@ -347,36 +343,30 @@ isNumericOverLit' = \case _ -> True -- mostly for debugging purposes -literalToString :: HsLit p -> Text +literalToString :: HsLit p -> String literalToString = \case - HsChar _ c -> "Char: " <> text c - HsCharPrim _ c -> "CharPrim: " <> text c - HsString _ fs -> "String: " <> text fs - HsStringPrim _ bs -> "StringPrim: " <> text bs - HsInt _ il -> "Int: " <> text il - HsIntPrim _ n -> "IntPrim: " <> text n - HsWordPrim _ n -> "WordPrim: " <> text n - HsInt64Prim _ n -> "Int64Prim: " <> text n - HsWord64Prim _ n -> "Word64Prim: " <> text n - HsInteger _ n ty -> "Integer: " <> text n <> " Type: " <> tyToText ty - HsRat _ fl ty -> "Rat: " <> text fl <> " Type: " <> tyToText ty - HsFloatPrim _ fl -> "FloatPrim: " <> text fl - HsDoublePrim _ fl -> "DoublePrim: " <> text fl + HsChar _ c -> "Char: " <> show c + HsCharPrim _ c -> "CharPrim: " <> show c + HsString _ fs -> "String: " <> show fs + HsStringPrim _ bs -> "StringPrim: " <> show bs + HsInt _ il -> "Int: " <> show il + HsIntPrim _ n -> "IntPrim: " <> show n + HsWordPrim _ n -> "WordPrim: " <> show n + HsInt64Prim _ n -> "Int64Prim: " <> show n + HsWord64Prim _ n -> "Word64Prim: " <> show n + HsInteger _ n ty -> "Integer: " <> show n <> " Type: " <> tyToLiteral ty + HsRat _ fl ty -> "Rat: " <> show fl <> " Type: " <> tyToLiteral ty + HsFloatPrim _ fl -> "FloatPrim: " <> show fl + HsDoublePrim _ fl -> "DoublePrim: " <> show fl _ -> "XHsLit" where - text :: Show a => a -> Text - text = T.pack . show + tyToLiteral :: Type -> String + tyToLiteral = unsafePrintSDoc . ppr - tyToText :: Type -> Text - tyToText = T.pack . unsafePrintSDoc . ppr - -overLitToString :: HsOverLit GhcPs -> Text +overLitToString :: HsOverLit GhcPs -> String overLitToString = \case - OverLit _ olv he -> (T.concat $ traverseExpr he) <> (case olv of - HsIntegral il -> case il of { IL st b n -> "IntegralOverLit: " <> text n } - HsFractional fl -> case fl of { FL st b ra -> "RationalOverLit: " <> text ra } - HsIsString st fs -> "HIsString: " <> text fs) + OverLit _ olv he -> case olv of + HsIntegral il -> case il of { IL st b n -> "IntegralOverLit: " <> show n } + HsFractional fl -> case fl of { FL st b ra -> "RationalOverLit: " <> show ra } + HsIsString st fs -> "HIsString: " <> show fs _ -> "XOverLit" - where - text :: Show a => a -> Text - text = T.pack . show From 0c3ff178b7133e62957c1e473641fb625cad971b Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Thu, 11 Nov 2021 22:10:24 -0500 Subject: [PATCH 04/32] Implement Logic for actual CodeActions. The traversal of Haskell source has been turned into a rule. This rule generates hidden diagnostics which allow a user to run a code action over (most) literals. There is some "dead code" in the sense that some literals (prims to be exact) are not allowed to be changed, despite existing in code. The other "dead code" exists in the FormatType type. Certain extensions exist that alter how numbers are shown or act, we make note of those extensions but call them "NoFormat", which essentially means it's a NOOP. Most of the conversion is done via the Numeric module. There are plenty of "show" functions that provide the translation of numbers into the various formats. The only custom format is a slightly "dumb" NumDecimal-extension-function that generates three separate options, instead of using a numeric defined function. --- .../hls-alternate-number-format-plugin.cabal | 9 +- .../src/Ide/Plugin/AlternateNumberFormat.hs | 169 ++++++-- .../src/Ide/Plugin/Conversion.hs | 159 +++++++ .../src/Ide/Plugin/Literals.hs | 401 ++++++++++++++++++ .../src/Ide/Plugin/Traverse/Literals.hs | 110 +++-- stack.yaml | 1 + 6 files changed, 748 insertions(+), 101 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs create mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index cb036d5fb2..8b77ec7e54 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -15,19 +15,22 @@ extra-source-files: LICENSE library exposed-modules: Ide.Plugin.AlternateNumberFormat - other-modules: Ide.Plugin.Traverse.Literals + other-modules: Ide.Plugin.Literals, Ide.Plugin.Conversion hs-source-dirs: src build-depends: aeson - , base >=4.12 && <5 + , base >=4.13 && <5 , ghcide + , ghc-boot-th + , hls-graph , hls-plugin-api + , hls-retrie-plugin , hie-compat , lens , lsp , mtl - , hls-retrie-plugin , text + , unordered-containers default-language: Haskell2010 default-extensions: diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index ed5f6f71bc..d8f6f30b17 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -1,70 +1,155 @@ {-# LANGUAGE DataKinds #-} +{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeOperators #-} module Ide.Plugin.AlternateNumberFormat where import Control.Lens ((^.)) import Control.Monad.Except (ExceptT, MonadIO, liftIO) -import Data.Aeson (FromJSON, ToJSON, - Value (Null)) +import qualified Data.HashMap.Strict as HashMap +import Data.Maybe (fromMaybe, isJust) +import Data.Text (Text) import qualified Data.Text as T -import Development.IDE (GetParsedModuleWithComments (GetParsedModuleWithComments), - IdeState, - TcModuleResult (TcModuleResult, tmrParsed, tmrTypechecked), - TypeCheck (TypeCheck), - ideLogger, runAction, +import Development.IDE (GetParsedModule (GetParsedModule), + IdeState, RuleResult, + Rules, + ShowDiagnostic (HideDiag), + define, ideLogger, + isInsideSrcSpan, noRange, + runAction, + srcSpanToRange, use, useWithStale) import Development.IDE.Core.PositionMapping (PositionMapping) -import Development.IDE.GHC.Compat -import Development.IDE.GHC.Compat.Util (FastString, mkFastString) +import Development.IDE.GHC.Compat hiding (getSrcSpan) +import Development.IDE.GHC.Compat.Util (toList) +import Development.IDE.Graph.Classes (Hashable, NFData) import Development.IDE.Types.Logger as Logger +import GHC.Generics (Generic) +import Ide.Plugin.Conversion (FormatType, + alternateFormat, + toFormatTypes) +import Ide.Plugin.Literals (Literal (..), + collectLiterals, + getSrcSpan, getSrcText) import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, response) -import Ide.Plugin.Traverse.Literals (collectLiterals - ) import Ide.Types import Language.LSP.Types -import Language.LSP.Types.Lens (textDocument, uri) +import Language.LSP.Types.Lens (uri) import Prelude hiding (log) descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId) - { pluginHandlers = mkPluginHandler STextDocumentHover codeActionHandler - , pluginCommands = commands + { pluginHandlers = mkPluginHandler STextDocumentCodeAction codeActionHandler + , pluginRules = collectLiteralsRule } -commands :: [PluginCommand IdeState] -commands = [PluginCommand "alternateNumberFormat" "Provide alternate number formats based on LanguagePragmas and Type" provideFormat] - -newtype AlternateNumberParams = AlternateNumberParams Int - deriving(FromJSON, ToJSON) - -provideFormat :: CommandFunction IdeState AlternateNumberParams -provideFormat _ _ = pure $ Right Null - -codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentHover -codeActionHandler state _ caParams = response $ do - logIO' state "We are HERE" - nfp <- getNormalizedFilePath caParams - logIO state nfp - (pm, _) <- getHieAst state nfp - -- (TcModuleResult{..}, _) <- getHieAst state nfp - logIO state (collectLiterals pm) - logIO state $ "File: " <> nfpToFastString nfp - -- logIO state (collectTcLiterals $ tcg_binds tmrTypechecked ) - pure Nothing - -getNormalizedFilePath :: Monad m => HoverParams -> ExceptT String m NormalizedFilePath -getNormalizedFilePath caParams = handleMaybe "Error: converting to NormalizedFilePath" +data CollectLiterals = CollectLiterals + deriving (Show, Eq, Generic) + +instance Hashable CollectLiterals +instance NFData CollectLiterals + +type instance RuleResult CollectLiterals = CollectLiteralsResult + +data CollectLiteralsResult = CLR { + literals :: [Literal] + , formatTypes :: [FormatType] + } deriving (Generic) + +instance Show CollectLiteralsResult where + show _ = "" + +instance NFData CollectLiteralsResult + +collectLiteralsRule :: Rules () +collectLiteralsRule = define $ \CollectLiterals nfp -> do + pm <- use GetParsedModule nfp + -- get the current extensions active and transform them into FormatTypes + let fmts = getFormatTypes <$> pm + -- collect all the literals for a file + lits = collectLiterals . pm_parsed_source <$> pm + -- make diagnostics for each literal (they will be hidden from editor) + litDiags = maybe [] (map (mkFileDiagnostic nfp . mkDiagnostic)) lits + pure (litDiags, CLR <$> lits <*> fmts) + where + getFormatTypes = toFormatTypes . toList . extensionFlags . ms_hspp_opts . pm_mod_summary + mkFileDiagnostic nfp' diag = (nfp', HideDiag, diag) + +codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentCodeAction +codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ do + nfp <- getNormalizedFilePath docId + (CLR{..}, _) <- getCollectLiterals state nfp + -- remove any invalid literals (see validTarget comment) + let litsInRange = filter validTarget literals + -- generate alternateFormats and zip with the literal that generated the alternates + literalPairs = map (\lit -> (lit, alternateFormat formatTypes lit)) litsInRange + -- make a code action for every literal and its' alternates (then flatten the result) + actions = concatMap (\(lit, alts) -> map (mkCodeAction nfp lit) alts) literalPairs + + pure $ List actions + where + getSrcTextDefault = fromMaybe "" . getSrcText + -- for now we ignore literals with no attached source text/span (TH I believe) + validTarget :: Literal -> Bool + validTarget lit = let srcSpan = getSrcSpan lit + in currRange `contains` srcSpan + && isJust (getSrcText lit) + && isRealSrcSpan srcSpan + + mkCodeAction :: NormalizedFilePath -> Literal -> Text -> Command |? CodeAction + mkCodeAction nfp lit alt = InR CodeAction { + _title = "Convert " <> getSrcTextDefault lit <> " into " <> alt + -- what should this actually be? + , _kind = Just $ CodeActionUnknown "alternate.style" + , _diagnostics = Nothing + , _isPreferred = Just True + , _disabled = Nothing + , _edit = Just $ mkWorkspaceEdit nfp lit alt + , _command = Nothing + , _xdata = Nothing + } + + mkWorkspaceEdit :: NormalizedFilePath -> Literal -> Text -> WorkspaceEdit + mkWorkspaceEdit nfp lit alt = WorkspaceEdit changes Nothing Nothing + where + -- NOTE: currently our logic filters our any noRange possibilities + txtEdit = TextEdit (fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit) alt + changes = Just $ HashMap.fromList [( filePathToUri $ fromNormalizedFilePath nfp, List [txtEdit])] + +-- from HaddockComments.hs +contains :: Range -> SrcSpan -> Bool +contains Range {_start, _end} x = isInsideSrcSpan _start x || isInsideSrcSpan _end x + +-- a source span provides no meaningful information to edit +isRealSrcSpan :: SrcSpan -> Bool +isRealSrcSpan (UnhelpfulSpan _) = False +isRealSrcSpan _ = True + +mkDiagnostic :: Literal -> Diagnostic +mkDiagnostic lit = Diagnostic { + _range = fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit + , _severity = Just DsHint + , _code = Nothing + , _source = getSrcText lit + , _message = "alternateNumberFormat" + , _tags = Nothing + , _relatedInformation = Nothing + } + +getNormalizedFilePath :: Monad m => TextDocumentIdentifier -> ExceptT String m NormalizedFilePath +getNormalizedFilePath docId = handleMaybe "Error: converting to NormalizedFilePath" $ uriToNormalizedFilePath - $ toNormalizedUri (caParams ^. (textDocument . uri)) + $ toNormalizedUri (docId ^. uri) -getHieAst :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m (ParsedModule, PositionMapping) -getHieAst state = handleMaybeM "Error: Could not get AST" . liftIO . runAction "AlternateNumberFormat.GetHieAst" state . useWithStale GetParsedModuleWithComments +getCollectLiterals :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m (CollectLiteralsResult, PositionMapping) +getCollectLiterals state = handleMaybeM "Error: Could not get ParsedModule" + . liftIO + . runAction "AlternateNumberFormat.CollectLiterals" state + . useWithStale CollectLiterals -nfpToFastString :: NormalizedFilePath -> FastString -nfpToFastString = mkFastString . fromNormalizedFilePath logIO :: (MonadIO m, Show a) => IdeState -> a -> m () logIO state = liftIO . log state diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs new file mode 100644 index 0000000000..9efd6169dd --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -0,0 +1,159 @@ +{-# LANGUAGE DeriveGeneric #-} +module Ide.Plugin.Conversion where + +import Data.Char (toUpper) +import Data.List (delete) +import Data.Maybe (mapMaybe) +import Data.Ratio (denominator, numerator) +import Data.Text (Text) +import qualified Data.Text as T +import Development.IDE.Graph.Classes (NFData) +import GHC.Generics (Generic) +import GHC.LanguageExtensions.Type (Extension (..)) +import GHC.Show (intToDigit) +import Ide.Plugin.Literals (Literal (..), getSrcText) +import Numeric + +data FormatType = IntFormat IntFormatType + | FracFormat FracFormatType + | AnyFormat AnyFormatType + | NoFormat + deriving (Show, Eq, Generic) + +instance NFData FormatType + +data IntFormatType = HexFormat + | OctalFormat + | BinaryFormat + | NumDecimalFormat + deriving (Show, Eq, Generic) + +instance NFData IntFormatType + +data FracFormatType = HexFloatFormat + | ExponentFormat + deriving (Show, Eq, Generic) + +instance NFData FracFormatType + +data AnyFormatType = DecimalFormat + deriving (Show, Eq, Generic) + +instance NFData AnyFormatType + +alternateFormat :: [FormatType] -> Literal -> [Text] +alternateFormat fmts lit = case lit of + IntLiteral _ (Just _) val -> concatMap (alternateIntFormat val) (removeCurrentFormat lit fmts) + FracLiteral _ (Just _) val -> if denominator val == 1 -- floats that can be integers we can represent as ints + then concatMap (alternateIntFormat (numerator val)) (removeCurrentFormat lit fmts) + else concatMap (alternateFracFormat val) (removeCurrentFormat lit fmts) + _ -> ["Uh Oh"] -- This means there is no Source Text so we just ignore it + +alternateIntFormat :: Integer -> FormatType -> [Text] +alternateIntFormat val fmt = case fmt of + IntFormat ift -> case ift of + HexFormat -> [T.pack $ toHex val] + OctalFormat -> [T.pack $ toOctal val] + BinaryFormat -> [T.pack $ toBinary val] + NumDecimalFormat -> toNumDecimal val -- this is the only reason we return List of Text :/ + AnyFormat DecimalFormat -> [T.pack $ toDecimal val] + _ -> [] + +alternateFracFormat :: Rational -> FormatType -> [Text] +alternateFracFormat val fmt = case fmt of + AnyFormat DecimalFormat -> [T.pack $ toFloatDecimal (fromRational val)] + FracFormat HexFloatFormat -> [T.pack $ toHexFloat (fromRational val)] + FracFormat ExponentFormat -> [T.pack $ toFloatExpDecimal (fromRational val)] + _ -> [] + +-- TODO: implement logic +removeCurrentFormat :: Literal -> [FormatType] -> [FormatType] +removeCurrentFormat lit fmts = case getSrcText lit of + Just src -> delete (sourceToFormatType src) fmts + Nothing -> fmts + +sourceToFormatType :: Text -> FormatType +sourceToFormatType srcText + -- is in Hex format, if so, is it a float format or regular format? + | T.isPrefixOf "0x" srcText || T.isPrefixOf "0X" srcText = if T.any (== '.') srcText then FracFormat HexFloatFormat else IntFormat HexFormat + -- Octal + | T.isPrefixOf "0o" srcText || T.isPrefixOf "0O" srcText = IntFormat OctalFormat + -- Binary + | T.isPrefixOf "0b" srcText || T.isPrefixOf "0B" srcText = IntFormat BinaryFormat + -- Note: the text package doesn't export T.elem until 1.2.5(!!) + -- Num Decimal Format (we just assume this is an Int using NumDecimal Extension) + -- nothing happens if a Fractional value is the source text + | T.any (== 'e') srcText || T.any (== 'E') srcText = IntFormat NumDecimalFormat + -- just assume we are in base 10 + | otherwise = AnyFormat DecimalFormat + +-- grab the Numeric related extensions that are turned on for a file +toFormatTypes :: [Extension] -> [FormatType] +toFormatTypes = (<>) [IntFormat HexFormat, IntFormat OctalFormat, AnyFormat DecimalFormat] . mapMaybe (`lookup` numericPairs) + +-- current list of Numeric related extensions +-- LexicalNegation --- 9.0.1 > --- superset of NegativeLiterals +numericPairs :: [(Extension, FormatType)] +numericPairs = [(NumericUnderscores, NoFormat), (NegativeLiterals, NoFormat)] <> intPairs <> fracPairs + +numericFormats :: [FormatType] +numericFormats = map snd numericPairs + +intPairs :: [(Extension, FormatType)] +intPairs = [(BinaryLiterals, IntFormat BinaryFormat), (NumDecimals, IntFormat NumDecimalFormat)] + +intFormats :: [FormatType] +intFormats = map snd intPairs + +fracPairs :: [(Extension, FormatType)] +fracPairs = [(HexFloatLiterals, FracFormat HexFloatFormat)] + +fracFormats :: [FormatType] +fracFormats = map snd fracPairs + +-- Generate up to 3 possible choices where: +-- dropWhile (\d -> val `div` d) > 1000) implies we want at MOST 3 digits to left of decimal +-- takeWhile (val >) implies we want to stop once we start to get numbers like: 0.1e[N] +-- take 3 implies we want at most three choices which will center around the format: +-- - 500.123e4 +-- - 50.0123e5 +-- - 5e.00123e6 +-- NOTE: showEFloat would also work, but results in only one option +toNumDecimal :: Integer -> [Text] +toNumDecimal val = map (showNumDecimal val) $ take 3 $ takeWhile (val >= ) $ dropWhile (\d -> (val `div` d) > 1000) divisors + where + divisors = 10 : map (*10) divisors + +showNumDecimal :: Integer -> Integer -> Text +showNumDecimal val divisor = let (q, r) = val `quotRem` divisor + numExponent = length $ filter (== '0') $ show divisor + in T.pack $ show q <> "." <> show r <> "e" <> show numExponent + +toBase :: (Num a, Ord a) => (a -> ShowS) -> String -> a -> String +toBase conv header n + | n < 0 = '-' : header <> map toUpper (conv (abs n) "") + | otherwise = header <> map toUpper (conv n "") + +toOctal :: (Integral a, Show a) => a -> String +toOctal = toBase showOct "0o" + +toDecimal :: Integral a => a -> String +toDecimal = toBase showInt "" + +toBinary :: (Integral a, Show a) => a -> String +toBinary = toBase showBin "0b" + where + -- this is not defined in versions of Base < 4.16-ish + showBin = showIntAtBase 2 intToDigit + +toHex :: (Integral a, Show a) => a -> String +toHex = toBase showHex "0x" + +toFloatDecimal :: RealFloat a => a -> String +toFloatDecimal val = showFFloat Nothing val "" + +toFloatExpDecimal :: RealFloat a => a -> String +toFloatExpDecimal val = showEFloat Nothing val "" + +toHexFloat :: RealFloat a => a -> String +toHexFloat val = showHFloat val "" diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs new file mode 100644 index 0000000000..635a13854b --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -0,0 +1,401 @@ +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DerivingVia #-} +{-# LANGUAGE FlexibleInstances #-} +module Ide.Plugin.Literals where +import Data.Maybe (maybeToList) +import Data.Text (Text) +import qualified Data.Text as T +import Development.IDE.GHC.Compat +import Development.IDE.GHC.Util (unsafePrintSDoc) +import Development.IDE.Graph.Classes (NFData) +import GHC.Generics (Generic) + +-- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node +-- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or +-- in "Expr Mode" where it's an actual expression +class Traverse a where + traverseTree :: a -> [Literal] + +instance Traverse (LHsExpr GhcPs) where + traverseTree = traverseLExpr + +instance Traverse (LHsCmd GhcPs) where + traverseTree = traverseLCmd + +-- data type to capture what type of literal we are dealing with +-- provides location and possibly source text (for OverLits) as well as it's value +-- we currently don't have any use for PrimLiterals. They never have source text so we always drop them +data Literal = IntLiteral SrcSpan (Maybe Text) Integer + | FracLiteral SrcSpan (Maybe Text) Rational + | IntPrimLiteral SrcSpan (Maybe Text) Integer + | FracPrimLiteral SrcSpan (Maybe Text) Rational + deriving (Generic, Show) + +instance NFData Literal where + +getSrcText :: Literal -> Maybe Text +getSrcText = \case + IntLiteral _ txt _ -> txt + FracLiteral _ txt _ -> txt + IntPrimLiteral _ txt _ -> txt + FracPrimLiteral _ txt _ -> txt + +getSrcSpan :: Literal -> SrcSpan +getSrcSpan = \case + IntLiteral ss _ _ -> ss + FracLiteral ss _ _ -> ss + IntPrimLiteral ss _ _ -> ss + FracPrimLiteral ss _ _ -> ss + + +-- | Find all literals in a Parsed Source File +collectLiterals :: ParsedSource -> [Literal] +collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc + +----------------------------------------- DECLARATIONS ----------------------------------------- +-- | Find all Literals in a Declaration. +traverseLDecl :: LHsDecl GhcPs -> [Literal] +traverseLDecl (L _ decls) = traverseDecl decls + +traverseDecl :: HsDecl GhcPs -> [Literal] +traverseDecl = \case + TyClD _ tcd -> traverseTyClDecl tcd + ValD _ hsBind -> traverseBind hsBind + SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl + -- don't think this is necessary + AnnD _ annDecl -> traverseAnnDecl annDecl + RuleD _ ruleDecl -> traverseRuleDecls ruleDecl + -------------------------------------------------- + _ -> [] + +traverseTyClDecl :: TyClDecl GhcPs -> [Literal] +traverseTyClDecl = \case + ClassDecl{tcdMeths} -> concatMap traverseLBind tcdMeths + _ -> [] + +traverseAnnDecl :: AnnDecl GhcPs -> [Literal] +traverseAnnDecl = \case + HsAnnotation _ _ _ expr -> traverseLExpr expr + _ -> [] + +traverseSpliceDecl :: SpliceDecl GhcPs -> [Literal] +traverseSpliceDecl = \case + SpliceDecl _ splice _ -> traverseLSplice splice + _ -> [] + +traverseRuleDecls :: RuleDecls GhcPs -> [Literal] +traverseRuleDecls = \case + HsRules _ _ ruleDecls -> concatMap traverseLRuleDecl ruleDecls + _ -> [] + +traverseLRuleDecl :: LRuleDecl GhcPs -> [Literal] +traverseLRuleDecl = traverseRuleDecl . unLoc + +traverseRuleDecl :: RuleDecl GhcPs -> [Literal] +traverseRuleDecl = \case + HsRule{..} -> concatMap traverseLExpr [rd_lhs, rd_rhs] + _ -> [] +---------------------------------------------------------------------------------- + +traverseLBind :: LHsBindLR idL GhcPs -> [Literal] +traverseLBind = traverseBind . unLoc + +traverseBind :: HsBindLR idL GhcPs -> [Literal] +traverseBind = \case + FunBind{fun_matches} -> traverseMatchGroup fun_matches + VarBind{var_rhs} -> traverseLExpr var_rhs + _ -> [] + +traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Literal] +traverseMatchGroup = \case + MG _ matches _ -> concatMap traverseLMatch $ unLoc matches + _ -> [] + +traverseLMatch :: Traverse p => LMatch GhcPs p -> [Literal] +traverseLMatch = traverseMatch . unLoc + +traverseMatch :: Traverse p => Match GhcPs p -> [Literal] +traverseMatch = \case + Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss + _ -> [] + +traverseLPat :: LPat GhcPs -> [Literal] +traverseLPat (L sSpan pat) = traversePat sSpan pat + +traversePat :: SrcSpan -> Pat GhcPs -> [Literal] +traversePat sSpan = \case + LazyPat _ lpat -> traverseLPat lpat + AsPat _ _ lpat -> traverseLPat lpat + ParPat _ lpat -> traverseLPat lpat + -- TODO: Do we bother with patterns like this? BangPatterns will never have literals + BangPat _ lpat -> traverseLPat lpat + ListPat _ lpats -> concatMap traverseLPat lpats + TuplePat _ lpats _ -> concatMap traverseLPat lpats + SumPat _ lpat _ _ -> traverseLPat lpat + -- ConPat replaced these two in at least ghc-9.2.1 lib + ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) + ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) + ------------------------------------------------------------------- + ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat + SplicePat _ splice -> traverseSplice sSpan splice + LitPat _ lit -> getLiteralAsList sSpan lit + NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteralAsList olSpan overLit + <> maybe [] (traverseSynExpr sSpan) sexpr1 + <> traverseSynExpr sSpan sexpr2 + NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteralAsList olSpan loverLit + <> getOverLiteralAsList sSpan overLit + <> traverseSynExpr sSpan sexpr1 + <> traverseSynExpr sSpan sexpr2 + SigPat _ lpat _ -> traverseLPat lpat + CoPat _ _ pat _ -> traversePat sSpan pat + _ -> [] + +traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Literal] +traverseGRHSs = \case + GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds + _ -> [] + +traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Literal] +traverseLGRHS = traverseGRHS . unLoc + +traverseGRHS :: Traverse p => GRHS GhcPs p -> [Literal] +traverseGRHS = \case + GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards + _ -> [] + +traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Literal] +traverseLLocalBinds = traverseLocalBinds . unLoc + +traverseLocalBinds :: HsLocalBinds GhcPs -> [Literal] +traverseLocalBinds = \case + HsValBinds _ valBinds -> traverseValBinds valBinds + _ -> [] + +traverseValBinds :: HsValBindsLR idL GhcPs -> [Literal] +traverseValBinds = \case + ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds + _ -> [] + +traverseLStmt :: Traverse p => LStmt GhcPs p -> [Literal] +traverseLStmt (L sSpan stmt) = traverseStmt sSpan stmt + +traverseStmt :: Traverse p => SrcSpan -> Stmt GhcPs p -> [Literal] +traverseStmt sSpan = \case + LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sSpan sexpr + BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr sSpan) [sexpr1, sexpr2] + ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair sSpan) appPairs <> maybe [] (traverseSynExpr sSpan) sexpr + BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sSpan sexpr1 <> traverseSynExpr sSpan sexpr2 + LetStmt _ locBinds -> traverseLLocalBinds locBinds + ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock sSpan) parStmts <> traverseExpr sSpan expr <> traverseSynExpr sSpan sexpr + TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using + <> maybe [] traverseLExpr trS_by <> traverseExpr sSpan trS_fmap + <> concatMap (traverseSynExpr sSpan) [trS_ret, trS_bind] + RecStmt{..} -> concatMap traverseLStmt recS_stmts + <> concatMap (traverseSynExpr sSpan) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] + _ -> [] + +traverseParStmtBlock :: SrcSpan -> ParStmtBlock GhcPs GhcPs -> [Literal] +traverseParStmtBlock sSpan = \case + ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sSpan sexpr + _ -> [] + +traverseLExpr :: LHsExpr GhcPs -> [Literal] +traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr + +traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] +traverseExpr sSpan = \case + HsOverLit _ overLit -> getOverLiteralAsList sSpan overLit + HsLit _ lit -> getLiteralAsList sSpan lit + HsLam _ group -> traverseMatchGroup group + HsLamCase _ group -> traverseMatchGroup group + HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + HsAppType _ expr _ -> traverseLExpr expr + OpApp _ expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] + NegApp _ expr _ -> traverseLExpr expr + HsPar _ expr -> traverseLExpr expr + SectionL _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + SectionR _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + ExplicitTuple _ args _ -> concatMap traverseLTuple args + ExplicitSum _ _ _ expr -> traverseLExpr expr + HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group + HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr sSpan) sexpr + HsMultiIf _ grhss -> concatMap traverseLGRHS grhss + HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr + HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) + ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr sSpan) sexpr + RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds + RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds + ExprWithTySig _ expr _ -> traverseLExpr expr + ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseArithSeqInfo seqInfo + HsSCC _ _ _ expr -> traverseLExpr expr + HsCoreAnn _ _ _ expr -> traverseLExpr expr + HsBracket _ brackets -> traverseBrackets brackets + HsSpliceE _ splice -> traverseSplice sSpan splice + HsProc _ _ cmdTop -> traverseLCmdTop cmdTop + HsStatic _ expr -> traverseLExpr expr + HsTick _ _ expr -> traverseLExpr expr + HsBinTick _ _ _ expr -> traverseLExpr expr + HsTickPragma _ _ _ _ expr -> traverseLExpr expr + HsWrap _ _ expr -> traverseExpr sSpan expr + _ -> [] + +traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] +traverseLCmdTop = traverseCmdTop . unLoc + +traverseCmdTop :: HsCmdTop GhcPs -> [Literal] +traverseCmdTop = \case + HsCmdTop _ cmds -> traverseLCmd cmds + _ -> [] + +traverseLCmd :: LHsCmd GhcPs -> [Literal] +traverseLCmd (L sSpan cmd) = traverseCmd sSpan cmd + +traverseCmd :: SrcSpan -> HsCmd GhcPs -> [Literal] +traverseCmd sSpan = \case + HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] + HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops + HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr + HsCmdLam _ group -> traverseMatchGroup group + HsCmdPar _ cmd -> traverseLCmd cmd + HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group + HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] + HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd + HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) + HsCmdWrap _ _ cmd -> traverseCmd sSpan cmd + _ -> [] + +traverseBrackets :: HsBracket GhcPs -> [Literal] +traverseBrackets = \case + ExpBr _ expr -> traverseLExpr expr + PatBr _ lpat -> traverseLPat lpat + DecBrL _ decls -> concatMap traverseLDecl decls + DecBrG _ hsGroup -> traverseHsGroup hsGroup + TExpBr _ expr -> traverseLExpr expr + _ -> [] + +traverseHsGroup :: HsGroup GhcPs -> [Literal] +traverseHsGroup = \case + HsGroup{hs_valds} -> case hs_valds of + ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds + _ -> [] + _ -> [] + +traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Literal] +traverseArithSeqInfo = \case + From expr -> traverseLExpr expr + FromThen expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + FromTo expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] + FromThenTo expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] + +traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Literal] +traverseLRecordUpdate = traverseRecordUpdate . unLoc + +traverseRecordUpdate :: HsRecUpdField GhcPs -> [Literal] +traverseRecordUpdate HsRecField{..} = traverseLExpr hsRecFieldArg + +traverseRecordBinds :: HsRecordBinds GhcPs -> [Literal] +traverseRecordBinds HsRecFields{..} = concatMap traverseLRecordField rec_flds + +traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Literal] +traverseLRecordField = traverseRecordField . unLoc + +traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Literal] +traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg + +traverseAppPair :: SrcSpan -> (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Literal] +traverseAppPair sSpan (sexpr, appArg) = traverseSynExpr sSpan sexpr <> traverseAppArg sSpan appArg + +traverseAppArg :: SrcSpan -> ApplicativeArg GhcPs -> [Literal] +traverseAppArg sSpan = \case + ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr sSpan fail_operator + ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr sSpan final_expr <> traverseLPat bv_pattern + _ -> [] + +traverseLTuple :: LHsTupArg GhcPs -> [Literal] +traverseLTuple = traverseTuple . unLoc + +traverseTuple :: HsTupArg GhcPs -> [Literal] +traverseTuple = \case + Present _ expr -> traverseLExpr expr + _ -> [] + +traverseLSplice :: Located (HsSplice GhcPs) -> [Literal] +traverseLSplice (L sSpan splice) = traverseSplice sSpan splice + +traverseSplice :: SrcSpan -> HsSplice GhcPs -> [Literal] +traverseSplice sSpan = \case + HsTypedSplice _ _ _ expr -> traverseLExpr expr + HsUntypedSplice _ _ _ expr -> traverseLExpr expr + HsSpliced _ _ st -> case st of + HsSplicedExpr expr -> traverseExpr sSpan expr + HsSplicedPat pat -> traversePat sSpan pat + _ ->[] + _ -> [] + +traverseSynExpr :: SrcSpan -> SyntaxExpr GhcPs -> [Literal] +traverseSynExpr sSpan SyntaxExpr{syn_expr} = traverseExpr sSpan syn_expr + +getLiteralAsList :: SrcSpan -> HsLit GhcPs -> [Literal] +getLiteralAsList sSpan = maybeToList . getLiteral sSpan + +-- Translate from Hs Type to our Literal type +getLiteral :: SrcSpan -> HsLit GhcPs -> Maybe Literal +getLiteral sSpan = \case + HsInt _ val -> Just $ fromIntegralLit sSpan val + HsIntPrim _ val -> Just $ IntPrimLiteral sSpan Nothing val + HsWordPrim _ val -> Just $ IntPrimLiteral sSpan Nothing val + HsInt64Prim _ val -> Just $ IntPrimLiteral sSpan Nothing val + HsWord64Prim _ val -> Just $ IntPrimLiteral sSpan Nothing val + HsInteger _ val _ -> Just $ IntLiteral sSpan Nothing val + HsRat _ val _ -> Just $ fromFractionalLit sSpan val + HsFloatPrim _ (FL _ _ val) -> Just $ FracPrimLiteral sSpan Nothing val + HsDoublePrim _ (FL _ _ val) -> Just $ FracPrimLiteral sSpan Nothing val + _ -> Nothing + +getOverLiteralAsList :: SrcSpan -> HsOverLit GhcPs -> [Literal] +getOverLiteralAsList sSpan = maybeToList . getOverLiteral sSpan + +getOverLiteral :: SrcSpan -> HsOverLit GhcPs -> Maybe Literal +getOverLiteral sSpan OverLit{..} = case ol_val of + HsIntegral il -> Just $ fromIntegralLit sSpan il + HsFractional fl -> Just $ fromFractionalLit sSpan fl + _ -> Nothing +getOverLiteral _ _ = Nothing + +fromIntegralLit :: SrcSpan -> IntegralLit -> Literal +fromIntegralLit s (IL txt _ val) = IntLiteral s (fromSourceText txt) val + +fromFractionalLit :: SrcSpan -> FractionalLit -> Literal +fromFractionalLit s (FL txt _ val) = FracLiteral s (fromSourceText txt) val + +fromSourceText :: SourceText -> Maybe Text +fromSourceText = \case + SourceText s -> Just $ T.pack s + NoSourceText -> Nothing + +-- mostly for debugging purposes +literalToString :: HsLit p -> String +literalToString = \case + HsChar _ c -> "Char: " <> show c + HsCharPrim _ c -> "CharPrim: " <> show c + HsString _ fs -> "String: " <> show fs + HsStringPrim _ bs -> "StringPrim: " <> show bs + HsInt _ il -> "Int: " <> show il + HsIntPrim _ n -> "IntPrim: " <> show n + HsWordPrim _ n -> "WordPrim: " <> show n + HsInt64Prim _ n -> "Int64Prim: " <> show n + HsWord64Prim _ n -> "Word64Prim: " <> show n + HsInteger _ n ty -> "Integer: " <> show n <> " Type: " <> tyToLiteral ty + HsRat _ fl ty -> "Rat: " <> show fl <> " Type: " <> tyToLiteral ty + HsFloatPrim _ fl -> "FloatPrim: " <> show fl + HsDoublePrim _ fl -> "DoublePrim: " <> show fl + _ -> "XHsLit" + where + tyToLiteral :: Type -> String + tyToLiteral = unsafePrintSDoc . ppr + +overLitToString :: OverLitVal -> String +overLitToString = \case + HsIntegral int -> case int of { IL _ _ val -> "IntegralOverLit: " <> show val } + HsFractional frac -> case frac of { FL _ _ val -> "RationalOverLit: " <> show val } + HsIsString _ str -> "HIsString: " <> show str diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs index 8c60116650..acbcd75587 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs @@ -1,9 +1,7 @@ {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} module Ide.Plugin.Traverse.Literals where -import Data.Text (Text) -import qualified Data.Text as T -import Development.IDE.GHC.Compat hiding (text) +import Development.IDE.GHC.Compat import Development.IDE.GHC.Util (unsafePrintSDoc) -- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node @@ -35,10 +33,10 @@ collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc . pm_parsed_sourc ----------------------------------------- DECLARATIONS ----------------------------------------- -- | Find all Literals in a Declaration. traverseLDecl :: LHsDecl GhcPs -> [Literal] -traverseLDecl (L span decls) = traverseDecl span decls +traverseLDecl (L _ decls) = traverseDecl decls -traverseDecl :: SrcSpan -> HsDecl GhcPs -> [Literal] -traverseDecl span = \case +traverseDecl :: HsDecl GhcPs -> [Literal] +traverseDecl = \case TyClD _ tcd -> traverseTyClDecl tcd ValD _ hsBind -> traverseBind hsBind SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl @@ -100,10 +98,10 @@ traverseMatch = \case _ -> [] traverseLPat :: LPat GhcPs -> [Literal] -traverseLPat (L span pat) = traversePat span pat +traverseLPat (L sSpan pat) = traversePat sSpan pat traversePat :: SrcSpan -> Pat GhcPs -> [Literal] -traversePat span = \case +traversePat sSpan = \case LazyPat _ lpat -> traverseLPat lpat AsPat _ _ lpat -> traverseLPat lpat ParPat _ lpat -> traverseLPat lpat @@ -117,17 +115,17 @@ traversePat span = \case ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) ------------------------------------------------------------------- ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat - SplicePat _ splice -> traverseSplice span splice - LitPat _ lit -> getLiteral span lit + SplicePat _ splice -> traverseSplice sSpan splice + LitPat _ lit -> getLiteral sSpan lit NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteral olSpan overLit - <> maybe [] (traverseSynExpr span) sexpr1 - <> traverseSynExpr span sexpr2 + <> maybe [] (traverseSynExpr sSpan) sexpr1 + <> traverseSynExpr sSpan sexpr2 NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteral olSpan loverLit - <> getOverLiteral span overLit - <> traverseSynExpr span sexpr1 - <> traverseSynExpr span sexpr2 + <> getOverLiteral sSpan overLit + <> traverseSynExpr sSpan sexpr1 + <> traverseSynExpr sSpan sexpr2 SigPat _ lpat _ -> traverseLPat lpat - CoPat _ _ pat _ -> traversePat span pat + CoPat _ _ pat _ -> traversePat sSpan pat _ -> [] traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Literal] @@ -157,35 +155,35 @@ traverseValBinds = \case _ -> [] traverseLStmt :: Traverse p => LStmt GhcPs p -> [Literal] -traverseLStmt (L span stmt) = traverseStmt span stmt +traverseLStmt (L sSpan stmt) = traverseStmt sSpan stmt traverseStmt :: Traverse p => SrcSpan -> Stmt GhcPs p -> [Literal] -traverseStmt span = \case - LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr span sexpr - BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr span) [sexpr1, sexpr2] - ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair span) appPairs <> maybe [] (traverseSynExpr span) sexpr - BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr span sexpr1 <> traverseSynExpr span sexpr2 +traverseStmt sSpan = \case + LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sSpan sexpr + BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr sSpan) [sexpr1, sexpr2] + ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair sSpan) appPairs <> maybe [] (traverseSynExpr sSpan) sexpr + BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sSpan sexpr1 <> traverseSynExpr sSpan sexpr2 LetStmt _ locBinds -> traverseLLocalBinds locBinds - ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock span) parStmts <> traverseExpr span expr <> traverseSynExpr span sexpr + ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock sSpan) parStmts <> traverseExpr sSpan expr <> traverseSynExpr sSpan sexpr TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using - <> maybe [] traverseLExpr trS_by <> traverseExpr span trS_fmap - <> concatMap (traverseSynExpr span) [trS_ret, trS_bind] + <> maybe [] traverseLExpr trS_by <> traverseExpr sSpan trS_fmap + <> concatMap (traverseSynExpr sSpan) [trS_ret, trS_bind] RecStmt{..} -> concatMap traverseLStmt recS_stmts - <> concatMap (traverseSynExpr span) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] + <> concatMap (traverseSynExpr sSpan) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] _ -> [] traverseParStmtBlock :: SrcSpan -> ParStmtBlock GhcPs GhcPs -> [Literal] -traverseParStmtBlock span = \case - ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr span sexpr +traverseParStmtBlock sSpan = \case + ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sSpan sexpr _ -> [] traverseLExpr :: LHsExpr GhcPs -> [Literal] -traverseLExpr (L span hsExpr) = traverseExpr span hsExpr +traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] -traverseExpr span = \case - HsOverLit _ overLit -> [Overloaded span overLit | isNumericOverLit overLit] - HsLit _ lit -> [NonOverloaded span lit | isNumericLiteral lit] +traverseExpr sSpan = \case + HsOverLit _ overLit -> [Overloaded sSpan overLit | isNumericOverLit overLit] + HsLit _ lit -> [NonOverloaded sSpan lit | isNumericLiteral lit] HsLam _ group -> traverseMatchGroup group HsLamCase _ group -> traverseMatchGroup group HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] @@ -198,25 +196,25 @@ traverseExpr span = \case ExplicitTuple _ args _ -> concatMap traverseLTuple args ExplicitSum _ _ _ expr -> traverseLExpr expr HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group - HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr span) sexpr + HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr sSpan) sexpr HsMultiIf _ grhss -> concatMap traverseLGRHS grhss HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) - ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr span) sexpr + ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr sSpan) sexpr RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds ExprWithTySig _ expr _ -> traverseLExpr expr - ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr span) sexpr <> traverseArithSeqInfo seqInfo + ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseArithSeqInfo seqInfo HsSCC _ _ _ expr -> traverseLExpr expr HsCoreAnn _ _ _ expr -> traverseLExpr expr HsBracket _ brackets -> traverseBrackets brackets - HsSpliceE _ splice -> traverseSplice span splice + HsSpliceE _ splice -> traverseSplice sSpan splice HsProc _ _ cmdTop -> traverseLCmdTop cmdTop HsStatic _ expr -> traverseLExpr expr HsTick _ _ expr -> traverseLExpr expr HsBinTick _ _ _ expr -> traverseLExpr expr HsTickPragma _ _ _ _ expr -> traverseLExpr expr - HsWrap _ _ expr -> traverseExpr span expr + HsWrap _ _ expr -> traverseExpr sSpan expr _ -> [] traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] @@ -228,20 +226,20 @@ traverseCmdTop = \case _ -> [] traverseLCmd :: LHsCmd GhcPs -> [Literal] -traverseLCmd (L span cmd) = traverseCmd span cmd +traverseLCmd (L sSpan cmd) = traverseCmd sSpan cmd traverseCmd :: SrcSpan -> HsCmd GhcPs -> [Literal] -traverseCmd span = \case +traverseCmd sSpan = \case HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr HsCmdLam _ group -> traverseMatchGroup group HsCmdPar _ cmd -> traverseLCmd cmd HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group - HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr span) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] + HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) - HsCmdWrap _ _ cmd -> traverseCmd span cmd + HsCmdWrap _ _ cmd -> traverseCmd sSpan cmd _ -> [] traverseBrackets :: HsBracket GhcPs -> [Literal] @@ -283,12 +281,12 @@ traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Literal] traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg traverseAppPair :: SrcSpan -> (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Literal] -traverseAppPair span (sexpr, appArg) = traverseSynExpr span sexpr <> traverseAppArg span appArg +traverseAppPair sSpan (sexpr, appArg) = traverseSynExpr sSpan sexpr <> traverseAppArg sSpan appArg traverseAppArg :: SrcSpan -> ApplicativeArg GhcPs -> [Literal] -traverseAppArg span = \case - ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr span fail_operator - ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr span final_expr <> traverseLPat bv_pattern +traverseAppArg sSpan = \case + ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr sSpan fail_operator + ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr sSpan final_expr <> traverseLPat bv_pattern _ -> [] traverseLTuple :: LHsTupArg GhcPs -> [Literal] @@ -300,27 +298,27 @@ traverseTuple = \case _ -> [] traverseLSplice :: Located (HsSplice GhcPs) -> [Literal] -traverseLSplice (L span splice) = traverseSplice span splice +traverseLSplice (L sSpan splice) = traverseSplice sSpan splice traverseSplice :: SrcSpan -> HsSplice GhcPs -> [Literal] -traverseSplice span = \case +traverseSplice sSpan = \case HsTypedSplice _ _ _ expr -> traverseLExpr expr HsUntypedSplice _ _ _ expr -> traverseLExpr expr HsSpliced _ _ st -> case st of - HsSplicedExpr expr -> traverseExpr span expr - HsSplicedPat pat -> traversePat span pat + HsSplicedExpr expr -> traverseExpr sSpan expr + HsSplicedPat pat -> traversePat sSpan pat _ ->[] _ -> [] traverseSynExpr :: SrcSpan -> SyntaxExpr GhcPs -> [Literal] -traverseSynExpr span SyntaxExpr{syn_expr} = traverseExpr span syn_expr +traverseSynExpr sSpan SyntaxExpr{syn_expr} = traverseExpr sSpan syn_expr -- Translate from Hs Type to our Literal type getLiteral :: SrcSpan -> HsLit GhcPs -> [Literal] -getLiteral span lit = [NonOverloaded span lit | isNumericLiteral lit] +getLiteral sSpan lit = [NonOverloaded sSpan lit | isNumericLiteral lit] getOverLiteral :: SrcSpan -> HsOverLit GhcPs -> [Literal] -getOverLiteral span lit = [Overloaded span lit | isNumericOverLit lit] +getOverLiteral sSpan lit = [Overloaded sSpan lit | isNumericOverLit lit] -- Ignore non-numerics isNumericLiteral :: HsLit p -> Bool @@ -365,8 +363,8 @@ literalToString = \case overLitToString :: HsOverLit GhcPs -> String overLitToString = \case - OverLit _ olv he -> case olv of - HsIntegral il -> case il of { IL st b n -> "IntegralOverLit: " <> show n } - HsFractional fl -> case fl of { FL st b ra -> "RationalOverLit: " <> show ra } - HsIsString st fs -> "HIsString: " <> show fs + OverLit _ overLit _ -> case overLit of + HsIntegral int -> case int of { IL _ _ val -> "IntegralOverLit: " <> show val } + HsFractional frac -> case frac of { FL _ _ val -> "RationalOverLit: " <> show val } + HsIsString _ str -> "HIsString: " <> show str _ -> "XOverLit" diff --git a/stack.yaml b/stack.yaml index f38265d1f5..200a1dbdf7 100644 --- a/stack.yaml +++ b/stack.yaml @@ -25,6 +25,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock From f1e886483997156551d9e77453956574bddca337 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Thu, 11 Nov 2021 22:45:08 -0500 Subject: [PATCH 05/32] Clarify source code comments. Reformat file structure. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 34 +- .../src/Ide/Plugin/Traverse/Literals.hs | 370 ------------------ 2 files changed, 13 insertions(+), 391 deletions(-) delete mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index d8f6f30b17..33f872ecb9 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -78,6 +78,17 @@ collectLiteralsRule = define $ \CollectLiterals nfp -> do getFormatTypes = toFormatTypes . toList . extensionFlags . ms_hspp_opts . pm_mod_summary mkFileDiagnostic nfp' diag = (nfp', HideDiag, diag) +mkDiagnostic :: Literal -> Diagnostic +mkDiagnostic lit = Diagnostic { + _range = fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit + , _severity = Just DsHint + , _code = Nothing + , _source = getSrcText lit + , _message = "alternateNumberFormat" + , _tags = Nothing + , _relatedInformation = Nothing + } + codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentCodeAction codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ do nfp <- getNormalizedFilePath docId @@ -123,21 +134,11 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ contains :: Range -> SrcSpan -> Bool contains Range {_start, _end} x = isInsideSrcSpan _start x || isInsideSrcSpan _end x --- a source span provides no meaningful information to edit +-- a source span that provides no meaningful information is NOT a valid source span for our use case isRealSrcSpan :: SrcSpan -> Bool isRealSrcSpan (UnhelpfulSpan _) = False isRealSrcSpan _ = True -mkDiagnostic :: Literal -> Diagnostic -mkDiagnostic lit = Diagnostic { - _range = fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit - , _severity = Just DsHint - , _code = Nothing - , _source = getSrcText lit - , _message = "alternateNumberFormat" - , _tags = Nothing - , _relatedInformation = Nothing - } getNormalizedFilePath :: Monad m => TextDocumentIdentifier -> ExceptT String m NormalizedFilePath getNormalizedFilePath docId = handleMaybe "Error: converting to NormalizedFilePath" @@ -152,14 +153,5 @@ getCollectLiterals state = handleMaybeM "Error: Could not get ParsedModule" logIO :: (MonadIO m, Show a) => IdeState -> a -> m () -logIO state = liftIO . log state - -log :: Show a => IdeState -> a -> IO () -log state = log' state . show - -logIO' :: MonadIO m => IdeState -> String -> m () -logIO' state = liftIO . log' state - -log' :: IdeState -> String -> IO () -log' state = Logger.logError (ideLogger state) . T.pack +logIO state = liftIO . Logger.logInfo (ideLogger state) . T.pack . show diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs deleted file mode 100644 index acbcd75587..0000000000 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Traverse/Literals.hs +++ /dev/null @@ -1,370 +0,0 @@ -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleInstances #-} -module Ide.Plugin.Traverse.Literals where -import Development.IDE.GHC.Compat -import Development.IDE.GHC.Util (unsafePrintSDoc) - --- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node --- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or --- in "Expr Mode" where it's an actual expression -class Traverse a where - traverseTree :: a -> [Literal] - -instance Traverse (LHsExpr GhcPs) where - traverseTree = traverseLExpr - -instance Traverse (LHsCmd GhcPs) where - traverseTree = traverseLCmd - -data Literal = Overloaded SrcSpan (HsOverLit GhcPs) - | NonOverloaded SrcSpan (HsLit GhcPs) - | NoLocation Literal -- Unused - -instance Show Literal where - show = \case - Overloaded ss hol -> "SourceLoc: " <> show ss <> " - " <> overLitToString hol - NonOverloaded ss hl -> "SourceLoc: " <> show ss <> " - " <> literalToString hl - NoLocation lit -> "NoLocation ---> " <> show lit - --- | Find all literals in a Parsed Source File -collectLiterals :: ParsedModule -> [Literal] -collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc . pm_parsed_source - ------------------------------------------ DECLARATIONS ----------------------------------------- --- | Find all Literals in a Declaration. -traverseLDecl :: LHsDecl GhcPs -> [Literal] -traverseLDecl (L _ decls) = traverseDecl decls - -traverseDecl :: HsDecl GhcPs -> [Literal] -traverseDecl = \case - TyClD _ tcd -> traverseTyClDecl tcd - ValD _ hsBind -> traverseBind hsBind - SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl - -- don't think this is necessary - AnnD _ annDecl -> traverseAnnDecl annDecl - RuleD _ ruleDecl -> traverseRuleDecls ruleDecl - -------------------------------------------------- - _ -> [] - -traverseTyClDecl :: TyClDecl GhcPs -> [Literal] -traverseTyClDecl = \case - ClassDecl{tcdMeths} -> concatMap traverseLBind tcdMeths - _ -> [] - -traverseAnnDecl :: AnnDecl GhcPs -> [Literal] -traverseAnnDecl = \case - HsAnnotation _ _ _ expr -> traverseLExpr expr - _ -> [] - -traverseSpliceDecl :: SpliceDecl GhcPs -> [Literal] -traverseSpliceDecl = \case - SpliceDecl _ splice _ -> traverseLSplice splice - _ -> [] - -traverseRuleDecls :: RuleDecls GhcPs -> [Literal] -traverseRuleDecls = \case - HsRules _ _ ruleDecls -> concatMap traverseLRuleDecl ruleDecls - _ -> [] - -traverseLRuleDecl :: LRuleDecl GhcPs -> [Literal] -traverseLRuleDecl = traverseRuleDecl . unLoc - -traverseRuleDecl :: RuleDecl GhcPs -> [Literal] -traverseRuleDecl = \case - HsRule{..} -> concatMap traverseLExpr [rd_lhs, rd_rhs] - _ -> [] ----------------------------------------------------------------------------------- - -traverseLBind :: LHsBindLR idL GhcPs -> [Literal] -traverseLBind = traverseBind . unLoc - -traverseBind :: HsBindLR idL GhcPs -> [Literal] -traverseBind = \case - FunBind{fun_matches} -> traverseMatchGroup fun_matches - VarBind{var_rhs} -> traverseLExpr var_rhs - _ -> [] - -traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Literal] -traverseMatchGroup = \case - MG _ matches _ -> concatMap traverseLMatch $ unLoc matches - _ -> [] - -traverseLMatch :: Traverse p => LMatch GhcPs p -> [Literal] -traverseLMatch = traverseMatch . unLoc - -traverseMatch :: Traverse p => Match GhcPs p -> [Literal] -traverseMatch = \case - Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss - _ -> [] - -traverseLPat :: LPat GhcPs -> [Literal] -traverseLPat (L sSpan pat) = traversePat sSpan pat - -traversePat :: SrcSpan -> Pat GhcPs -> [Literal] -traversePat sSpan = \case - LazyPat _ lpat -> traverseLPat lpat - AsPat _ _ lpat -> traverseLPat lpat - ParPat _ lpat -> traverseLPat lpat - -- TODO: Do we bother with patterns like this? BangPatterns will never have literals - BangPat _ lpat -> traverseLPat lpat - ListPat _ lpats -> concatMap traverseLPat lpats - TuplePat _ lpats _ -> concatMap traverseLPat lpats - SumPat _ lpat _ _ -> traverseLPat lpat - -- ConPat replaced these two in at least ghc-9.2.1 lib - ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) - ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) - ------------------------------------------------------------------- - ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat - SplicePat _ splice -> traverseSplice sSpan splice - LitPat _ lit -> getLiteral sSpan lit - NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteral olSpan overLit - <> maybe [] (traverseSynExpr sSpan) sexpr1 - <> traverseSynExpr sSpan sexpr2 - NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteral olSpan loverLit - <> getOverLiteral sSpan overLit - <> traverseSynExpr sSpan sexpr1 - <> traverseSynExpr sSpan sexpr2 - SigPat _ lpat _ -> traverseLPat lpat - CoPat _ _ pat _ -> traversePat sSpan pat - _ -> [] - -traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Literal] -traverseGRHSs = \case - GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds - _ -> [] - -traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Literal] -traverseLGRHS = traverseGRHS . unLoc - -traverseGRHS :: Traverse p => GRHS GhcPs p -> [Literal] -traverseGRHS = \case - GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards - _ -> [] - -traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Literal] -traverseLLocalBinds = traverseLocalBinds . unLoc - -traverseLocalBinds :: HsLocalBinds GhcPs -> [Literal] -traverseLocalBinds = \case - HsValBinds _ valBinds -> traverseValBinds valBinds - _ -> [] - -traverseValBinds :: HsValBindsLR idL GhcPs -> [Literal] -traverseValBinds = \case - ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds - _ -> [] - -traverseLStmt :: Traverse p => LStmt GhcPs p -> [Literal] -traverseLStmt (L sSpan stmt) = traverseStmt sSpan stmt - -traverseStmt :: Traverse p => SrcSpan -> Stmt GhcPs p -> [Literal] -traverseStmt sSpan = \case - LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sSpan sexpr - BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr sSpan) [sexpr1, sexpr2] - ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair sSpan) appPairs <> maybe [] (traverseSynExpr sSpan) sexpr - BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sSpan sexpr1 <> traverseSynExpr sSpan sexpr2 - LetStmt _ locBinds -> traverseLLocalBinds locBinds - ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock sSpan) parStmts <> traverseExpr sSpan expr <> traverseSynExpr sSpan sexpr - TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using - <> maybe [] traverseLExpr trS_by <> traverseExpr sSpan trS_fmap - <> concatMap (traverseSynExpr sSpan) [trS_ret, trS_bind] - RecStmt{..} -> concatMap traverseLStmt recS_stmts - <> concatMap (traverseSynExpr sSpan) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] - _ -> [] - -traverseParStmtBlock :: SrcSpan -> ParStmtBlock GhcPs GhcPs -> [Literal] -traverseParStmtBlock sSpan = \case - ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sSpan sexpr - _ -> [] - -traverseLExpr :: LHsExpr GhcPs -> [Literal] -traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr - -traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] -traverseExpr sSpan = \case - HsOverLit _ overLit -> [Overloaded sSpan overLit | isNumericOverLit overLit] - HsLit _ lit -> [NonOverloaded sSpan lit | isNumericLiteral lit] - HsLam _ group -> traverseMatchGroup group - HsLamCase _ group -> traverseMatchGroup group - HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - HsAppType _ expr _ -> traverseLExpr expr - OpApp _ expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] - NegApp _ expr _ -> traverseLExpr expr - HsPar _ expr -> traverseLExpr expr - SectionL _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - SectionR _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - ExplicitTuple _ args _ -> concatMap traverseLTuple args - ExplicitSum _ _ _ expr -> traverseLExpr expr - HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group - HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr sSpan) sexpr - HsMultiIf _ grhss -> concatMap traverseLGRHS grhss - HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr - HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) - ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr sSpan) sexpr - RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds - RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds - ExprWithTySig _ expr _ -> traverseLExpr expr - ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseArithSeqInfo seqInfo - HsSCC _ _ _ expr -> traverseLExpr expr - HsCoreAnn _ _ _ expr -> traverseLExpr expr - HsBracket _ brackets -> traverseBrackets brackets - HsSpliceE _ splice -> traverseSplice sSpan splice - HsProc _ _ cmdTop -> traverseLCmdTop cmdTop - HsStatic _ expr -> traverseLExpr expr - HsTick _ _ expr -> traverseLExpr expr - HsBinTick _ _ _ expr -> traverseLExpr expr - HsTickPragma _ _ _ _ expr -> traverseLExpr expr - HsWrap _ _ expr -> traverseExpr sSpan expr - _ -> [] - -traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] -traverseLCmdTop = traverseCmdTop . unLoc - -traverseCmdTop :: HsCmdTop GhcPs -> [Literal] -traverseCmdTop = \case - HsCmdTop _ cmds -> traverseLCmd cmds - _ -> [] - -traverseLCmd :: LHsCmd GhcPs -> [Literal] -traverseLCmd (L sSpan cmd) = traverseCmd sSpan cmd - -traverseCmd :: SrcSpan -> HsCmd GhcPs -> [Literal] -traverseCmd sSpan = \case - HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] - HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops - HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr - HsCmdLam _ group -> traverseMatchGroup group - HsCmdPar _ cmd -> traverseLCmd cmd - HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group - HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] - HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd - HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) - HsCmdWrap _ _ cmd -> traverseCmd sSpan cmd - _ -> [] - -traverseBrackets :: HsBracket GhcPs -> [Literal] -traverseBrackets = \case - ExpBr _ expr -> traverseLExpr expr - PatBr _ lpat -> traverseLPat lpat - DecBrL _ decls -> concatMap traverseLDecl decls - DecBrG _ hsGroup -> traverseHsGroup hsGroup - TExpBr _ expr -> traverseLExpr expr - _ -> [] - -traverseHsGroup :: HsGroup GhcPs -> [Literal] -traverseHsGroup = \case - HsGroup{hs_valds} -> case hs_valds of - ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds - _ -> [] - _ -> [] - -traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Literal] -traverseArithSeqInfo = \case - From expr -> traverseLExpr expr - FromThen expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - FromTo expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - FromThenTo expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] - -traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Literal] -traverseLRecordUpdate = traverseRecordUpdate . unLoc - -traverseRecordUpdate :: HsRecUpdField GhcPs -> [Literal] -traverseRecordUpdate HsRecField{..} = traverseLExpr hsRecFieldArg - -traverseRecordBinds :: HsRecordBinds GhcPs -> [Literal] -traverseRecordBinds HsRecFields{..} = concatMap traverseLRecordField rec_flds - -traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Literal] -traverseLRecordField = traverseRecordField . unLoc - -traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Literal] -traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg - -traverseAppPair :: SrcSpan -> (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Literal] -traverseAppPair sSpan (sexpr, appArg) = traverseSynExpr sSpan sexpr <> traverseAppArg sSpan appArg - -traverseAppArg :: SrcSpan -> ApplicativeArg GhcPs -> [Literal] -traverseAppArg sSpan = \case - ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr sSpan fail_operator - ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr sSpan final_expr <> traverseLPat bv_pattern - _ -> [] - -traverseLTuple :: LHsTupArg GhcPs -> [Literal] -traverseLTuple = traverseTuple . unLoc - -traverseTuple :: HsTupArg GhcPs -> [Literal] -traverseTuple = \case - Present _ expr -> traverseLExpr expr - _ -> [] - -traverseLSplice :: Located (HsSplice GhcPs) -> [Literal] -traverseLSplice (L sSpan splice) = traverseSplice sSpan splice - -traverseSplice :: SrcSpan -> HsSplice GhcPs -> [Literal] -traverseSplice sSpan = \case - HsTypedSplice _ _ _ expr -> traverseLExpr expr - HsUntypedSplice _ _ _ expr -> traverseLExpr expr - HsSpliced _ _ st -> case st of - HsSplicedExpr expr -> traverseExpr sSpan expr - HsSplicedPat pat -> traversePat sSpan pat - _ ->[] - _ -> [] - -traverseSynExpr :: SrcSpan -> SyntaxExpr GhcPs -> [Literal] -traverseSynExpr sSpan SyntaxExpr{syn_expr} = traverseExpr sSpan syn_expr - --- Translate from Hs Type to our Literal type -getLiteral :: SrcSpan -> HsLit GhcPs -> [Literal] -getLiteral sSpan lit = [NonOverloaded sSpan lit | isNumericLiteral lit] - -getOverLiteral :: SrcSpan -> HsOverLit GhcPs -> [Literal] -getOverLiteral sSpan lit = [Overloaded sSpan lit | isNumericOverLit lit] - --- Ignore non-numerics -isNumericLiteral :: HsLit p -> Bool -isNumericLiteral = \case - HsChar _ _ -> False - HsCharPrim _ _ -> False - HsString _ _ -> False - HsStringPrim _ _ -> False - _ -> True - -isNumericOverLit :: HsOverLit p -> Bool -isNumericOverLit = \case - OverLit{ol_val} -> isNumericOverLit' ol_val - _ -> False - --- only a single non-numeric literal -isNumericOverLit' :: OverLitVal -> Bool -isNumericOverLit' = \case - HsIsString _ _ -> False - _ -> True - --- mostly for debugging purposes -literalToString :: HsLit p -> String -literalToString = \case - HsChar _ c -> "Char: " <> show c - HsCharPrim _ c -> "CharPrim: " <> show c - HsString _ fs -> "String: " <> show fs - HsStringPrim _ bs -> "StringPrim: " <> show bs - HsInt _ il -> "Int: " <> show il - HsIntPrim _ n -> "IntPrim: " <> show n - HsWordPrim _ n -> "WordPrim: " <> show n - HsInt64Prim _ n -> "Int64Prim: " <> show n - HsWord64Prim _ n -> "Word64Prim: " <> show n - HsInteger _ n ty -> "Integer: " <> show n <> " Type: " <> tyToLiteral ty - HsRat _ fl ty -> "Rat: " <> show fl <> " Type: " <> tyToLiteral ty - HsFloatPrim _ fl -> "FloatPrim: " <> show fl - HsDoublePrim _ fl -> "DoublePrim: " <> show fl - _ -> "XHsLit" - where - tyToLiteral :: Type -> String - tyToLiteral = unsafePrintSDoc . ppr - -overLitToString :: HsOverLit GhcPs -> String -overLitToString = \case - OverLit _ overLit _ -> case overLit of - HsIntegral int -> case int of { IL _ _ val -> "IntegralOverLit: " <> show val } - HsFractional frac -> case frac of { FL _ _ val -> "RationalOverLit: " <> show val } - HsIsString _ str -> "HIsString: " <> show str - _ -> "XOverLit" From 547655b0dc1f1fb44c6203349606b5a3e23463bb Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 13 Nov 2021 01:05:05 -0500 Subject: [PATCH 06/32] Set up Test Scaffolding. --- haskell-language-server.cabal | 2 +- .../hls-alternate-number-format-plugin.cabal | 20 +++++ .../test/Main.hs | 82 +++++++++++++++++++ .../test/testdata/TIntDtoH.expected.hs | 3 + .../test/testdata/TIntDtoH.hs | 3 + 5 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 plugins/hls-alternate-number-format-plugin/test/Main.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs diff --git a/haskell-language-server.cabal b/haskell-language-server.cabal index b816301a84..8ca75260f6 100644 --- a/haskell-language-server.cabal +++ b/haskell-language-server.cabal @@ -259,7 +259,7 @@ common splice cpp-options: -Dsplice common alternateNumberFormat - if flag(alternateNumberFormat) || flag(all-plugins) + if flag(alternateNumberFormat) build-depends: hls-alternate-number-format-plugin ^>=0.1.0.0 cpp-options: -DalternateNumberFormat diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 8b77ec7e54..d3483d43bb 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -38,3 +38,23 @@ library NamedFieldPuns OverloadedStrings RecordWildCards + +test-suite tests + type: exitcode-stdio-1.0 + default-language: Haskell2010 + hs-source-dirs: test + main-is: Main.hs + ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts + build-depends: + base + , filepath + , hls-alternate-number-format-plugin + , hls-test-utils + , regex-tdfa + , text + + default-extensions: + LambdaCase + NamedFieldPuns + OverloadedStrings + RecordWildCards diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs new file mode 100644 index 0000000000..c157aa53be --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -0,0 +1,82 @@ +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE ViewPatterns #-} +module Main ( main ) where + +import Data.List (find) +import Data.Text (Text) +import qualified Data.Text as T +import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat +import System.FilePath (()) +import Test.Hls +import Text.Regex.TDFA ((=~)) + +main :: IO () +main = defaultTestRunner test + +alternateNumberFormatPlugin :: PluginDescriptor IdeState +alternateNumberFormatPlugin = AlternateNumberFormat.descriptor "alternateNumberFormat" + +test :: TestTree +test = testGroup "alternateNumberFormat" [ + codeActionHex "TIntDtoH" 3 13] + +testDataDir :: FilePath +testDataDir = "test" "testdata" + +-- helpers defined from explicit-imports-plugin Main Test file + +goldenAlternateFormat :: FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree +goldenAlternateFormat fp = goldenWithHaskellDoc alternateNumberFormatPlugin (fp <> " (golden)") testDataDir fp "expected" "hs" + +codeActionTest :: (Maybe Text -> Bool) -> FilePath -> Int -> Int -> TestTree +codeActionTest filter' fp line col = goldenAlternateFormat fp $ \doc -> do + actions <- getAllCodeActions doc + -- can't generate code actions? + liftIO $ assertBool "Actions is Not Null" (not $ null actions) +-- case find (filter' . caTitle) actions of +-- Just (InR x) -> executeCodeAction x +-- _ -> liftIO $ assertFailure "Unable to find CodeAction" + +codeActionHex :: FilePath -> Int -> Int -> TestTree +codeActionHex = codeActionTest isHexCodeAction + +codeActionFloatHex :: FilePath -> Int -> Int -> TestTree +codeActionFloatHex = codeActionTest isHexFloatCodeAction + +caTitle :: (Command |? CodeAction) -> Maybe Text +caTitle (InR CodeAction {_title}) = Just _title +caTitle _ = Nothing + +pointRange :: Int -> Int -> Range +pointRange + (subtract 1 -> line) + (subtract 1 -> col) = + Range (Position line col) (Position line $ col + 2) + +convertPrefix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, decimalRegex :: Text +convertPrefix = "^Convert" +hexRegex = "into 0x\\d+$" +hexFloatRegex = "into 0x\\d+\\." +binaryRegex = "into 0b\\d+$" +octalRegex = "into 0o\\d+$" +decimalRegex = "into \\d+$" + +isCodeAction :: Text -> Maybe Text -> Bool +isCodeAction userRegex (Just txt) = (txt =~ convertPrefix) && (txt =~ userRegex) +isCodeAction _ _ = False + +isHexCodeAction :: Maybe Text -> Bool +isHexCodeAction = isCodeAction hexRegex + +isHexFloatCodeAction :: Maybe Text -> Bool +isHexFloatCodeAction = isCodeAction hexFloatRegex + +isBinaryCodeAction :: Maybe Text -> Bool +isBinaryCodeAction = isCodeAction binaryRegex + +isOctalCodeAction :: Maybe Text -> Bool +isOctalCodeAction = isCodeAction octalRegex + +isDecimalCodeAction :: Maybe Text -> Bool +isDecimalCodeAction = isCodeAction decimalRegex diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs new file mode 100644 index 0000000000..b974c16d98 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs @@ -0,0 +1,3 @@ +module TIntDtoH where + +convertMe = 0xC diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs new file mode 100644 index 0000000000..07fef56ab7 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs @@ -0,0 +1,3 @@ +module TIntDtoH where + +convertMe = 12 From e4a7c370131a874cade92fce76dcb4abcaa393e5 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 13 Nov 2021 12:19:49 -0500 Subject: [PATCH 07/32] Miscellaneous clean-up. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 2 +- .../src/Ide/Plugin/Literals.hs | 2 +- .../hls-alternate-number-format-plugin/test/Main.hs | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 33f872ecb9..3502426dde 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -38,7 +38,7 @@ import Ide.Plugin.Retrie (handleMaybe, import Ide.Types import Language.LSP.Types import Language.LSP.Types.Lens (uri) -import Prelude hiding (log) +import Prelude descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 635a13854b..eee6085e2f 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -31,7 +31,7 @@ data Literal = IntLiteral SrcSpan (Maybe Text) Integer | FracPrimLiteral SrcSpan (Maybe Text) Rational deriving (Generic, Show) -instance NFData Literal where +instance NFData Literal getSrcText :: Literal -> Maybe Text getSrcText = \case diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index c157aa53be..d4d62b0ea7 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -24,7 +24,7 @@ test = testGroup "alternateNumberFormat" [ testDataDir :: FilePath testDataDir = "test" "testdata" --- helpers defined from explicit-imports-plugin Main Test file +-- most helpers derived from explicit-imports-plugin Main Test file goldenAlternateFormat :: FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree goldenAlternateFormat fp = goldenWithHaskellDoc alternateNumberFormatPlugin (fp <> " (golden)") testDataDir fp "expected" "hs" @@ -56,10 +56,10 @@ pointRange convertPrefix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, decimalRegex :: Text convertPrefix = "^Convert" -hexRegex = "into 0x\\d+$" -hexFloatRegex = "into 0x\\d+\\." -binaryRegex = "into 0b\\d+$" -octalRegex = "into 0o\\d+$" +hexRegex = "into 0x[a-fA-F0-9]+$" +hexFloatRegex = "into 0x[a-fA-F0-9]+\\." +binaryRegex = "into 0b[0|1]+$" +octalRegex = "into 0o[0-8]+$" decimalRegex = "into \\d+$" isCodeAction :: Text -> Maybe Text -> Bool From 4ecfd4f4261b73df0a88c5e23782c12581a71e83 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 13 Nov 2021 14:03:27 -0500 Subject: [PATCH 08/32] Use Regex to Match Source Text. --- .../hls-alternate-number-format-plugin.cabal | 1 + .../src/Ide/Plugin/Conversion.hs | 47 ++++++++++++------- .../test/Main.hs | 22 +++++---- 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index d3483d43bb..c310e11f51 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -29,6 +29,7 @@ library , lens , lsp , mtl + , regex-tdfa , text , unordered-containers diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index 9efd6169dd..7e4bc21523 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -13,6 +13,7 @@ import GHC.LanguageExtensions.Type (Extension (..)) import GHC.Show (intToDigit) import Ide.Plugin.Literals (Literal (..), getSrcText) import Numeric +import Text.Regex.TDFA ((=~)) data FormatType = IntFormat IntFormatType | FracFormat FracFormatType @@ -37,7 +38,7 @@ data FracFormatType = HexFloatFormat instance NFData FracFormatType data AnyFormatType = DecimalFormat - deriving (Show, Eq, Generic) + deriving (Show, Eq, Generic) instance NFData AnyFormatType @@ -62,34 +63,44 @@ alternateIntFormat val fmt = case fmt of alternateFracFormat :: Rational -> FormatType -> [Text] alternateFracFormat val fmt = case fmt of AnyFormat DecimalFormat -> [T.pack $ toFloatDecimal (fromRational val)] - FracFormat HexFloatFormat -> [T.pack $ toHexFloat (fromRational val)] FracFormat ExponentFormat -> [T.pack $ toFloatExpDecimal (fromRational val)] + FracFormat HexFloatFormat -> [T.pack $ toHexFloat (fromRational val)] _ -> [] --- TODO: implement logic removeCurrentFormat :: Literal -> [FormatType] -> [FormatType] removeCurrentFormat lit fmts = case getSrcText lit of - Just src -> delete (sourceToFormatType src) fmts + Just src -> foldl (flip delete) fmts (sourceToFormatType src) Nothing -> fmts -sourceToFormatType :: Text -> FormatType +hexRegex, hexFloatRegex, binaryRegex, octalRegex, decimalRegex, numDecimalRegex :: Text +hexRegex = "0[xX][a-fA-F0-9]+" +hexFloatRegex = "0[xX][a-fA-F0-9]+\\.[a-fA-F0-9]+(p[+-]?[0-9]+)?" +binaryRegex = "0[bB][0|1]+" +octalRegex = "0[oO][0-8]+" +decimalRegex = "\\d+" +numDecimalRegex = "[0-9]+\\.[0-9]+[eE][+-]?[0-9]+" + +-- we export the regex for tests, but we want to be explicit in our matches +-- so we need to match the beginning/end of the source text +wrap :: Text -> Text +wrap regex = "^" <> regex <> "$" + +sourceToFormatType :: Text -> [FormatType] sourceToFormatType srcText - -- is in Hex format, if so, is it a float format or regular format? - | T.isPrefixOf "0x" srcText || T.isPrefixOf "0X" srcText = if T.any (== '.') srcText then FracFormat HexFloatFormat else IntFormat HexFormat - -- Octal - | T.isPrefixOf "0o" srcText || T.isPrefixOf "0O" srcText = IntFormat OctalFormat - -- Binary - | T.isPrefixOf "0b" srcText || T.isPrefixOf "0B" srcText = IntFormat BinaryFormat - -- Note: the text package doesn't export T.elem until 1.2.5(!!) - -- Num Decimal Format (we just assume this is an Int using NumDecimal Extension) - -- nothing happens if a Fractional value is the source text - | T.any (== 'e') srcText || T.any (== 'E') srcText = IntFormat NumDecimalFormat - -- just assume we are in base 10 - | otherwise = AnyFormat DecimalFormat + | srcText =~ wrap hexRegex = [IntFormat HexFormat] + | srcText =~ wrap hexFloatRegex = [FracFormat HexFloatFormat] + | srcText =~ wrap octalRegex = [IntFormat OctalFormat] + | srcText =~ wrap binaryRegex = [IntFormat BinaryFormat] + -- can either be a NumDecimal or just a regular Fractional with an exponent + -- otherwise we wouldn't need to return a list + | srcText =~ wrap numDecimalRegex = [IntFormat NumDecimalFormat, FracFormat ExponentFormat] + -- just assume we are in base 10 with no decimals + | otherwise = [AnyFormat DecimalFormat] -- grab the Numeric related extensions that are turned on for a file toFormatTypes :: [Extension] -> [FormatType] -toFormatTypes = (<>) [IntFormat HexFormat, IntFormat OctalFormat, AnyFormat DecimalFormat] . mapMaybe (`lookup` numericPairs) +toFormatTypes = (<>) [IntFormat HexFormat, IntFormat OctalFormat, FracFormat ExponentFormat, AnyFormat DecimalFormat] + . mapMaybe (`lookup` numericPairs) -- current list of Numeric related extensions -- LexicalNegation --- 9.0.1 > --- superset of NegativeLiterals diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index d4d62b0ea7..9347fcdd7d 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -7,6 +7,7 @@ import Data.List (find) import Data.Text (Text) import qualified Data.Text as T import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat +import qualified Ide.Plugin.Conversion as Conversion import System.FilePath (()) import Test.Hls import Text.Regex.TDFA ((=~)) @@ -54,16 +55,18 @@ pointRange (subtract 1 -> col) = Range (Position line col) (Position line $ col + 2) -convertPrefix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, decimalRegex :: Text -convertPrefix = "^Convert" -hexRegex = "into 0x[a-fA-F0-9]+$" -hexFloatRegex = "into 0x[a-fA-F0-9]+\\." -binaryRegex = "into 0b[0|1]+$" -octalRegex = "into 0o[0-8]+$" -decimalRegex = "into \\d+$" +convertPrefix, intoInfix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, numDecimalRegex, decimalRegex :: Text +convertPrefix = "Convert (" <> T.intercalate "|" [Conversion.hexRegex, Conversion.hexFloatRegex, Conversion.binaryRegex, Conversion.octalRegex, Conversion.numDecimalRegex, Conversion.decimalRegex] <> ")" +intoInfix = " into " +hexRegex = intoInfix <> Conversion.hexRegex +hexFloatRegex = intoInfix <> Conversion.hexFloatRegex +binaryRegex = intoInfix <> Conversion.binaryRegex +octalRegex = intoInfix <> Conversion.octalRegex +numDecimalRegex = intoInfix <> Conversion.numDecimalRegex +decimalRegex = intoInfix <> Conversion.decimalRegex isCodeAction :: Text -> Maybe Text -> Bool -isCodeAction userRegex (Just txt) = (txt =~ convertPrefix) && (txt =~ userRegex) +isCodeAction userRegex (Just txt) = txt =~ Conversion.wrap (convertPrefix <> userRegex) isCodeAction _ _ = False isHexCodeAction :: Maybe Text -> Bool @@ -78,5 +81,8 @@ isBinaryCodeAction = isCodeAction binaryRegex isOctalCodeAction :: Maybe Text -> Bool isOctalCodeAction = isCodeAction octalRegex +isNumDecimalCodeAction :: Maybe Text -> Bool +isNumDecimalCodeAction = isCodeAction numDecimalRegex + isDecimalCodeAction :: Maybe Text -> Bool isDecimalCodeAction = isCodeAction decimalRegex From 2a07712494c6c0137cc4ba51481dc0d26415d144 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 13 Nov 2021 14:31:11 -0500 Subject: [PATCH 09/32] Remove unneccessary diagnostics from Rule. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 3502426dde..9f94b5d0c8 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -14,9 +14,7 @@ import Data.Text (Text) import qualified Data.Text as T import Development.IDE (GetParsedModule (GetParsedModule), IdeState, RuleResult, - Rules, - ShowDiagnostic (HideDiag), - define, ideLogger, + Rules, define, ideLogger, isInsideSrcSpan, noRange, runAction, srcSpanToRange, use, @@ -71,23 +69,9 @@ collectLiteralsRule = define $ \CollectLiterals nfp -> do let fmts = getFormatTypes <$> pm -- collect all the literals for a file lits = collectLiterals . pm_parsed_source <$> pm - -- make diagnostics for each literal (they will be hidden from editor) - litDiags = maybe [] (map (mkFileDiagnostic nfp . mkDiagnostic)) lits - pure (litDiags, CLR <$> lits <*> fmts) + pure ([], CLR <$> lits <*> fmts) where getFormatTypes = toFormatTypes . toList . extensionFlags . ms_hspp_opts . pm_mod_summary - mkFileDiagnostic nfp' diag = (nfp', HideDiag, diag) - -mkDiagnostic :: Literal -> Diagnostic -mkDiagnostic lit = Diagnostic { - _range = fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit - , _severity = Just DsHint - , _code = Nothing - , _source = getSrcText lit - , _message = "alternateNumberFormat" - , _tags = Nothing - , _relatedInformation = Nothing - } codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentCodeAction codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ do From 42d3bf4bae8b921cdcd7b5a8cc1273be968a2234 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 14 Nov 2021 18:01:11 -0500 Subject: [PATCH 10/32] Update all stack versions to include new Plugin. --- .../HLSInt.gif | Bin 0 -> 159774 bytes stack-8.10.5.yaml | 1 + stack-8.10.6.yaml | 1 + stack-8.10.7.yaml | 1 + stack-8.6.5.yaml | 1 + stack-8.8.3.yaml | 1 + stack-8.8.4.yaml | 1 + stack-9.0.1.yaml | 1 + 8 files changed, 7 insertions(+) create mode 100644 plugins/hls-alternate-number-format-plugin/HLSInt.gif diff --git a/plugins/hls-alternate-number-format-plugin/HLSInt.gif b/plugins/hls-alternate-number-format-plugin/HLSInt.gif new file mode 100644 index 0000000000000000000000000000000000000000..22879a597301b9b0cd5f399e8326e275199882ec GIT binary patch literal 159774 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⋙F%4p7!kWYW0O5&TRF3-X~wQ=#(reRVQ$88 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 R5cIEv-+$5k|GCw!{{cM0IZprp literal 0 HcmV?d00001 diff --git a/stack-8.10.5.yaml b/stack-8.10.5.yaml index f94d4f74ef..d3960f6128 100644 --- a/stack-8.10.5.yaml +++ b/stack-8.10.5.yaml @@ -28,6 +28,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-8.10.6.yaml b/stack-8.10.6.yaml index fafa2f08b0..5dd2d33b5a 100644 --- a/stack-8.10.6.yaml +++ b/stack-8.10.6.yaml @@ -25,6 +25,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-8.10.7.yaml b/stack-8.10.7.yaml index f38265d1f5..200a1dbdf7 100644 --- a/stack-8.10.7.yaml +++ b/stack-8.10.7.yaml @@ -25,6 +25,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-8.6.5.yaml b/stack-8.6.5.yaml index 9f9532f626..d343420178 100644 --- a/stack-8.6.5.yaml +++ b/stack-8.6.5.yaml @@ -26,6 +26,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-8.8.3.yaml b/stack-8.8.3.yaml index 543bf2edd9..2893effc2e 100644 --- a/stack-8.8.3.yaml +++ b/stack-8.8.3.yaml @@ -26,6 +26,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-8.8.4.yaml b/stack-8.8.4.yaml index 0bc74c05e2..98ef6080f9 100644 --- a/stack-8.8.4.yaml +++ b/stack-8.8.4.yaml @@ -26,6 +26,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock diff --git a/stack-9.0.1.yaml b/stack-9.0.1.yaml index 978c454954..95ad20b500 100644 --- a/stack-9.0.1.yaml +++ b/stack-9.0.1.yaml @@ -26,6 +26,7 @@ packages: - ./plugins/hls-pragmas-plugin - ./plugins/hls-module-name-plugin - ./plugins/hls-ormolu-plugin + - ./plugins/hls-alternate-number-format-plugin ghc-options: "$everything": -haddock From b55345fd22e90053ee3e3bfcae353086aae1cc35 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 14 Nov 2021 18:19:19 -0500 Subject: [PATCH 11/32] Clean up Conversion.hs and AlternateNumberFormat. Clean up function names and add supporting haddock documentation for exported functions. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 1 - .../src/Ide/Plugin/Conversion.hs | 67 +++++++++++++------ 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 9f94b5d0c8..2974d423dd 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -36,7 +36,6 @@ import Ide.Plugin.Retrie (handleMaybe, import Ide.Types import Language.LSP.Types import Language.LSP.Types.Lens (uri) -import Prelude descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index 7e4bc21523..22eff23fec 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -1,5 +1,15 @@ {-# LANGUAGE DeriveGeneric #-} -module Ide.Plugin.Conversion where +module Ide.Plugin.Conversion ( + alternateFormat + , hexRegex + , hexFloatRegex + , binaryRegex + , octalRegex + , decimalRegex + , numDecimalRegex + , toFormatTypes + , FormatType +) where import Data.Char (toUpper) import Data.List (delete) @@ -42,13 +52,14 @@ data AnyFormatType = DecimalFormat instance NFData AnyFormatType +-- | Generate alternate formats for a single Literal based on FormatType's given. alternateFormat :: [FormatType] -> Literal -> [Text] alternateFormat fmts lit = case lit of IntLiteral _ (Just _) val -> concatMap (alternateIntFormat val) (removeCurrentFormat lit fmts) FracLiteral _ (Just _) val -> if denominator val == 1 -- floats that can be integers we can represent as ints then concatMap (alternateIntFormat (numerator val)) (removeCurrentFormat lit fmts) else concatMap (alternateFracFormat val) (removeCurrentFormat lit fmts) - _ -> ["Uh Oh"] -- This means there is no Source Text so we just ignore it + _ -> [] -- This means there is no Source Text so we just ignore it alternateIntFormat :: Integer -> FormatType -> [Text] alternateIntFormat val fmt = case fmt of @@ -56,7 +67,7 @@ alternateIntFormat val fmt = case fmt of HexFormat -> [T.pack $ toHex val] OctalFormat -> [T.pack $ toOctal val] BinaryFormat -> [T.pack $ toBinary val] - NumDecimalFormat -> toNumDecimal val -- this is the only reason we return List of Text :/ + NumDecimalFormat -> generateNumDecimal val -- this is the only reason we return List of Text :/ AnyFormat DecimalFormat -> [T.pack $ toDecimal val] _ -> [] @@ -72,32 +83,48 @@ removeCurrentFormat lit fmts = case getSrcText lit of Just src -> foldl (flip delete) fmts (sourceToFormatType src) Nothing -> fmts -hexRegex, hexFloatRegex, binaryRegex, octalRegex, decimalRegex, numDecimalRegex :: Text +-- | Regex to match a Haskell Hex Literal +hexRegex :: Text hexRegex = "0[xX][a-fA-F0-9]+" + +-- | Regex to match a Haskell Hex Float Literal +hexFloatRegex :: Text hexFloatRegex = "0[xX][a-fA-F0-9]+\\.[a-fA-F0-9]+(p[+-]?[0-9]+)?" + +-- | Regex to match a Haskell Binary Literal +binaryRegex :: Text binaryRegex = "0[bB][0|1]+" + +-- | Regex to match a Haskell Octal Literal +octalRegex :: Text octalRegex = "0[oO][0-8]+" -decimalRegex = "\\d+" + +-- | Regex to match a Haskell Decimal Literal (no decimal points) +decimalRegex :: Text +decimalRegex = "[0-9]+" + +-- | Regex to match a Haskell Literal with an explicit exponent +numDecimalRegex :: Text numDecimalRegex = "[0-9]+\\.[0-9]+[eE][+-]?[0-9]+" --- we export the regex for tests, but we want to be explicit in our matches +-- we want to be explicit in our matches -- so we need to match the beginning/end of the source text -wrap :: Text -> Text -wrap regex = "^" <> regex <> "$" +matchLineRegex :: Text -> Text +matchLineRegex regex = "^" <> regex <> "$" sourceToFormatType :: Text -> [FormatType] sourceToFormatType srcText - | srcText =~ wrap hexRegex = [IntFormat HexFormat] - | srcText =~ wrap hexFloatRegex = [FracFormat HexFloatFormat] - | srcText =~ wrap octalRegex = [IntFormat OctalFormat] - | srcText =~ wrap binaryRegex = [IntFormat BinaryFormat] + | srcText =~ matchLineRegex hexRegex = [IntFormat HexFormat] + | srcText =~ matchLineRegex hexFloatRegex = [FracFormat HexFloatFormat] + | srcText =~ matchLineRegex octalRegex = [IntFormat OctalFormat] + | srcText =~ matchLineRegex binaryRegex = [IntFormat BinaryFormat] -- can either be a NumDecimal or just a regular Fractional with an exponent -- otherwise we wouldn't need to return a list - | srcText =~ wrap numDecimalRegex = [IntFormat NumDecimalFormat, FracFormat ExponentFormat] + | srcText =~ matchLineRegex numDecimalRegex = [IntFormat NumDecimalFormat, FracFormat ExponentFormat] -- just assume we are in base 10 with no decimals | otherwise = [AnyFormat DecimalFormat] --- grab the Numeric related extensions that are turned on for a file +-- | Translate a list of Extensions into Format Types (plus a base set of Formats) toFormatTypes :: [Extension] -> [FormatType] toFormatTypes = (<>) [IntFormat HexFormat, IntFormat OctalFormat, FracFormat ExponentFormat, AnyFormat DecimalFormat] . mapMaybe (`lookup` numericPairs) @@ -130,15 +157,15 @@ fracFormats = map snd fracPairs -- - 50.0123e5 -- - 5e.00123e6 -- NOTE: showEFloat would also work, but results in only one option -toNumDecimal :: Integer -> [Text] -toNumDecimal val = map (showNumDecimal val) $ take 3 $ takeWhile (val >= ) $ dropWhile (\d -> (val `div` d) > 1000) divisors +generateNumDecimal :: Integer -> [Text] +generateNumDecimal val = map (toNumDecimal val) $ take 3 $ takeWhile (val >= ) $ dropWhile (\d -> (val `div` d) > 1000) divisors where divisors = 10 : map (*10) divisors -showNumDecimal :: Integer -> Integer -> Text -showNumDecimal val divisor = let (q, r) = val `quotRem` divisor - numExponent = length $ filter (== '0') $ show divisor - in T.pack $ show q <> "." <> show r <> "e" <> show numExponent +toNumDecimal :: Integer -> Integer -> Text +toNumDecimal val divisor = let (q, r) = val `quotRem` divisor + numExponent = length $ filter (== '0') $ show divisor + in T.pack $ show q <> "." <> show r <> "e" <> show numExponent toBase :: (Num a, Ord a) => (a -> ShowS) -> String -> a -> String toBase conv header n From 0326582809834631e484dbc35b16291c99ce7a6b Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 14 Nov 2021 18:33:15 -0500 Subject: [PATCH 12/32] Update cabal file bounds and add Github workflow test --- .github/workflows/test.yml | 4 ++++ .../hls-alternate-number-format-plugin.cabal | 16 ++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9971997a4b..c13375c4c4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -224,6 +224,10 @@ jobs: name: Test hls-hlint-plugin test suite run: cabal test hls-hlint-plugin --test-options="-j1 --rerun-update" || cabal test hls-hlint-plugin --test-options="-j1 --rerun" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-hlint-plugin --test-options="-j1 --rerun" + - if: matrix.test + name: Test hls-alternate-number-format-plugin + run: cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun-update" || cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun" + test_post_job: if: always() runs-on: ubuntu-latest diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index c310e11f51..7e4f0539c6 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -14,16 +14,16 @@ build-type: Simple extra-source-files: LICENSE library - exposed-modules: Ide.Plugin.AlternateNumberFormat - other-modules: Ide.Plugin.Literals, Ide.Plugin.Conversion + exposed-modules: Ide.Plugin.AlternateNumberFormat, Ide.Plugin.Conversion + other-modules: Ide.Plugin.Literals hs-source-dirs: src build-depends: aeson - , base >=4.13 && <5 - , ghcide - , ghc-boot-th + , base >=4.13 && < 5 + , ghcide >=1.2 && <1.5 + , ghc-boot-th ==8.10.7 , hls-graph - , hls-plugin-api + , hls-plugin-api >=1.1 && < 1.3 , hls-retrie-plugin , hie-compat , lens @@ -47,10 +47,10 @@ test-suite tests main-is: Main.hs ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts build-depends: - base + , base >=4.13 && < 5 , filepath , hls-alternate-number-format-plugin - , hls-test-utils + , hls-test-utils >=1.0 && <1.2 , regex-tdfa , text From 6219975e637bacf2f55b7ccce5924ea66582f648 Mon Sep 17 00:00:00 2001 From: jneira Date: Mon, 15 Nov 2021 10:42:08 +0100 Subject: [PATCH 13/32] Add plugin package to all cabal.project --- cabal-ghc901.project | 1 + cabal-ghc921.project | 1 + 2 files changed, 2 insertions(+) diff --git a/cabal-ghc901.project b/cabal-ghc901.project index ebd06a33a5..6e03981ec9 100644 --- a/cabal-ghc901.project +++ b/cabal-ghc901.project @@ -24,6 +24,7 @@ packages: ./plugins/hls-module-name-plugin ./plugins/hls-ormolu-plugin ./plugins/hls-call-hierarchy-plugin + ./plugins/hls-alternate-number-format-plugin with-compiler: ghc-9.0.1 diff --git a/cabal-ghc921.project b/cabal-ghc921.project index 9006511319..b12843406c 100644 --- a/cabal-ghc921.project +++ b/cabal-ghc921.project @@ -23,6 +23,7 @@ packages: ./plugins/hls-module-name-plugin ./plugins/hls-ormolu-plugin ./plugins/hls-call-hierarchy-plugin + ./plugins/hls-alternate-number-format-plugin tests: true From cd545b6b546eca8dfb974d66a7c16cb826d6e3b6 Mon Sep 17 00:00:00 2001 From: jneira Date: Mon, 15 Nov 2021 10:42:21 +0100 Subject: [PATCH 14/32] Add plugin to test suite --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9971997a4b..5ab9dcfefe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -224,6 +224,11 @@ jobs: name: Test hls-hlint-plugin test suite run: cabal test hls-hlint-plugin --test-options="-j1 --rerun-update" || cabal test hls-hlint-plugin --test-options="-j1 --rerun" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-hlint-plugin --test-options="-j1 --rerun" + - if: matrix.test + name: Test hls-alternate-number-format-plugin test suite + run: cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun-update" || cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun" || LSP_TEST_LOG_COLOR=0 LSP_TEST_LOG_MESSAGES=true LSP_TEST_LOG_STDERR=true cabal test hls-alternate-number-format-plugin --test-options="-j1 --rerun" + + test_post_job: if: always() runs-on: ubuntu-latest From c0d34aef324f619dd8c5898c827c0b83121056ea Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Tue, 16 Nov 2021 09:38:12 -0500 Subject: [PATCH 15/32] Push SYB changes. Test.hs is merely for testing and will be removed prior to Merge. --- .../hls-alternate-number-format-plugin.cabal | 5 +- .../src/Ide/Plugin/AlternateNumberFormat.hs | 9 +++- .../src/Ide/Plugin/Conversion.hs | 2 + .../src/Ide/Plugin/Literals.hs | 47 +++++-------------- .../src/Ide/Plugin/Test.hs | 18 +++++++ 5 files changed, 41 insertions(+), 40 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 7e4f0539c6..af12bff1f1 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -19,9 +19,9 @@ library hs-source-dirs: src build-depends: aeson - , base >=4.13 && < 5 + , base >=4.12 && < 5 , ghcide >=1.2 && <1.5 - , ghc-boot-th ==8.10.7 + , ghc-boot-th , hls-graph , hls-plugin-api >=1.1 && < 1.3 , hls-retrie-plugin @@ -30,6 +30,7 @@ library , lsp , mtl , regex-tdfa + , syb , text , unordered-containers diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 2974d423dd..2f32ba38d3 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -30,7 +30,8 @@ import Ide.Plugin.Conversion (FormatType, toFormatTypes) import Ide.Plugin.Literals (Literal (..), collectLiterals, - getSrcSpan, getSrcText) + getSrcSpan, getSrcText, + traverseNode) import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, response) import Ide.Types @@ -54,6 +55,7 @@ type instance RuleResult CollectLiterals = CollectLiteralsResult data CollectLiteralsResult = CLR { literals :: [Literal] , formatTypes :: [FormatType] + , lits :: [Literal] } deriving (Generic) instance Show CollectLiteralsResult where @@ -68,7 +70,8 @@ collectLiteralsRule = define $ \CollectLiterals nfp -> do let fmts = getFormatTypes <$> pm -- collect all the literals for a file lits = collectLiterals . pm_parsed_source <$> pm - pure ([], CLR <$> lits <*> fmts) + lits' = traverseNode . pm_parsed_source <$> pm + pure ([], CLR <$> lits <*> fmts <*> lits') where getFormatTypes = toFormatTypes . toList . extensionFlags . ms_hspp_opts . pm_mod_summary @@ -83,6 +86,8 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ -- make a code action for every literal and its' alternates (then flatten the result) actions = concatMap (\(lit, alts) -> map (mkCodeAction nfp lit) alts) literalPairs + logIO state $ "Lits: " <> (show lits) + pure $ List actions where getSrcTextDefault = fromMaybe "" . getSrcText diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index 22eff23fec..cc35aaafb5 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -7,6 +7,7 @@ module Ide.Plugin.Conversion ( , octalRegex , decimalRegex , numDecimalRegex + , matchLineRegex , toFormatTypes , FormatType ) where @@ -109,6 +110,7 @@ numDecimalRegex = "[0-9]+\\.[0-9]+[eE][+-]?[0-9]+" -- we want to be explicit in our matches -- so we need to match the beginning/end of the source text +-- | Wraps a Regex with a beginning ("^") and end ("$") token matchLineRegex :: Text -> Text matchLineRegex regex = "^" <> regex <> "$" diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index eee6085e2f..675b2058c2 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -1,6 +1,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE RankNTypes #-} module Ide.Plugin.Literals where import Data.Maybe (maybeToList) import Data.Text (Text) @@ -8,7 +9,8 @@ import qualified Data.Text as T import Development.IDE.GHC.Compat import Development.IDE.GHC.Util (unsafePrintSDoc) import Development.IDE.Graph.Classes (NFData) -import GHC.Generics (Generic) +import qualified GHC.Generics as GHC +import Generics.SYB -- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node -- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or @@ -29,7 +31,7 @@ data Literal = IntLiteral SrcSpan (Maybe Text) Integer | FracLiteral SrcSpan (Maybe Text) Rational | IntPrimLiteral SrcSpan (Maybe Text) Integer | FracPrimLiteral SrcSpan (Maybe Text) Rational - deriving (Generic, Show) + deriving (GHC.Generic, Show) instance NFData Literal @@ -52,6 +54,9 @@ getSrcSpan = \case collectLiterals :: ParsedSource -> [Literal] collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc +traverseNode :: (Data ast, Typeable ast) => ast -> [Literal] +traverseNode = everything (<>) (([] :: [Literal]) `mkQ` traverseLExpr) + ----------------------------------------- DECLARATIONS ----------------------------------------- -- | Find all Literals in a Declaration. traverseLDecl :: LHsDecl GhcPs -> [Literal] @@ -204,40 +209,10 @@ traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] traverseExpr sSpan = \case - HsOverLit _ overLit -> getOverLiteralAsList sSpan overLit - HsLit _ lit -> getLiteralAsList sSpan lit - HsLam _ group -> traverseMatchGroup group - HsLamCase _ group -> traverseMatchGroup group - HsApp _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - HsAppType _ expr _ -> traverseLExpr expr - OpApp _ expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] - NegApp _ expr _ -> traverseLExpr expr - HsPar _ expr -> traverseLExpr expr - SectionL _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - SectionR _ expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - ExplicitTuple _ args _ -> concatMap traverseLTuple args - ExplicitSum _ _ _ expr -> traverseLExpr expr - HsCase _ expr group -> traverseLExpr expr <> traverseMatchGroup group - HsIf _ sexpr expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] <> maybe [] (traverseSynExpr sSpan) sexpr - HsMultiIf _ grhss -> concatMap traverseLGRHS grhss - HsLet _ locBinds expr -> traverseLLocalBinds locBinds <> traverseLExpr expr - HsDo _ _ stmt -> concatMap traverseLStmt (unLoc stmt) - ExplicitList _ sexpr exprs -> concatMap traverseLExpr exprs <> maybe [] (traverseSynExpr sSpan) sexpr - RecordCon{rcon_flds} -> traverseRecordBinds rcon_flds - RecordUpd{..} -> traverseLExpr rupd_expr <> concatMap traverseLRecordUpdate rupd_flds - ExprWithTySig _ expr _ -> traverseLExpr expr - ArithSeq _ sexpr seqInfo -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseArithSeqInfo seqInfo - HsSCC _ _ _ expr -> traverseLExpr expr - HsCoreAnn _ _ _ expr -> traverseLExpr expr - HsBracket _ brackets -> traverseBrackets brackets - HsSpliceE _ splice -> traverseSplice sSpan splice - HsProc _ _ cmdTop -> traverseLCmdTop cmdTop - HsStatic _ expr -> traverseLExpr expr - HsTick _ _ expr -> traverseLExpr expr - HsBinTick _ _ _ expr -> traverseLExpr expr - HsTickPragma _ _ _ _ expr -> traverseLExpr expr - HsWrap _ _ expr -> traverseExpr sSpan expr - _ -> [] + HsOverLit _ overLit -> getOverLiteralAsList sSpan overLit + HsLit _ lit -> getLiteralAsList sSpan lit + _ -> [] + -- _ -> traverseNode expr traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] traverseLCmdTop = traverseCmdTop . unLoc diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs new file mode 100644 index 0000000000..02637a7dd2 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs @@ -0,0 +1,18 @@ +{-# LANGUAGE BinaryLiterals #-} +{-# LANGUAGE HexFloatLiterals #-} +{-# LANGUAGE MagicHash #-} +{-# LANGUAGE NegativeLiterals #-} +{-# LANGUAGE NumDecimals #-} +{-# LANGUAGE NumericUnderscores #-} +module Ide.Plugin.Test where +import GHC.Base (Int#, (+#)) +import GHC.Exts (Char#) + +test 0x3E8 = 0o1 :: Integer +test x = 345 + + + +test2 :: Double -> Double +test2 0.5 = 0.75 +test2 _ = 0x1.eb851eb851eb8p-4 From 71f1d4c95f1e2a40baab7e84112e6413fbea2b82 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 17 Nov 2021 20:58:40 -0500 Subject: [PATCH 16/32] Use Generics.SYB for parsing Literals from GHC Source. Updated Literals.hs to use custom SYB traversal of the AST. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 20 +- .../src/Ide/Plugin/Literals.hs | 272 ++---------------- 2 files changed, 27 insertions(+), 265 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 2f32ba38d3..1d76ef4d34 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -30,8 +30,7 @@ import Ide.Plugin.Conversion (FormatType, toFormatTypes) import Ide.Plugin.Literals (Literal (..), collectLiterals, - getSrcSpan, getSrcText, - traverseNode) + getSrcSpan, getSrcText) import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, response) import Ide.Types @@ -55,7 +54,6 @@ type instance RuleResult CollectLiterals = CollectLiteralsResult data CollectLiteralsResult = CLR { literals :: [Literal] , formatTypes :: [FormatType] - , lits :: [Literal] } deriving (Generic) instance Show CollectLiteralsResult where @@ -70,15 +68,14 @@ collectLiteralsRule = define $ \CollectLiterals nfp -> do let fmts = getFormatTypes <$> pm -- collect all the literals for a file lits = collectLiterals . pm_parsed_source <$> pm - lits' = traverseNode . pm_parsed_source <$> pm - pure ([], CLR <$> lits <*> fmts <*> lits') + pure ([], CLR <$> lits <*> fmts) where getFormatTypes = toFormatTypes . toList . extensionFlags . ms_hspp_opts . pm_mod_summary codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentCodeAction codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ do nfp <- getNormalizedFilePath docId - (CLR{..}, _) <- getCollectLiterals state nfp + CLR{..} <- requestLiterals state nfp -- remove any invalid literals (see validTarget comment) let litsInRange = filter validTarget literals -- generate alternateFormats and zip with the literal that generated the alternates @@ -86,7 +83,8 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ -- make a code action for every literal and its' alternates (then flatten the result) actions = concatMap (\(lit, alts) -> map (mkCodeAction nfp lit) alts) literalPairs - logIO state $ "Lits: " <> (show lits) + logIO state "Literals: " + mapM_ (logIO state) literals pure $ List actions where @@ -133,13 +131,13 @@ getNormalizedFilePath docId = handleMaybe "Error: converting to NormalizedFilePa $ uriToNormalizedFilePath $ toNormalizedUri (docId ^. uri) -getCollectLiterals :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m (CollectLiteralsResult, PositionMapping) -getCollectLiterals state = handleMaybeM "Error: Could not get ParsedModule" +requestLiterals :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m CollectLiteralsResult +requestLiterals state = handleMaybeM "Error: Could not get ParsedModule" . liftIO . runAction "AlternateNumberFormat.CollectLiterals" state - . useWithStale CollectLiterals + . use CollectLiterals logIO :: (MonadIO m, Show a) => IdeState -> a -> m () -logIO state = liftIO . Logger.logInfo (ideLogger state) . T.pack . show +logIO state = liftIO . Logger.logDebug (ideLogger state) . T.pack . show diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 675b2058c2..9f827b69f1 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -12,18 +12,6 @@ import Development.IDE.Graph.Classes (NFData) import qualified GHC.Generics as GHC import Generics.SYB --- Depending on our traversal path sometimes we have to parse the "body" of an expression or AST node --- in the context of how we got there. I.E. we could be in "CMD Mode" where we are parsing a HsCmd or --- in "Expr Mode" where it's an actual expression -class Traverse a where - traverseTree :: a -> [Literal] - -instance Traverse (LHsExpr GhcPs) where - traverseTree = traverseLExpr - -instance Traverse (LHsCmd GhcPs) where - traverseTree = traverseLCmd - -- data type to capture what type of literal we are dealing with -- provides location and possibly source text (for OverLits) as well as it's value -- we currently don't have any use for PrimLiterals. They never have source text so we always drop them @@ -51,158 +39,31 @@ getSrcSpan = \case -- | Find all literals in a Parsed Source File -collectLiterals :: ParsedSource -> [Literal] -collectLiterals = concatMap traverseLDecl . hsmodDecls . unLoc - -traverseNode :: (Data ast, Typeable ast) => ast -> [Literal] -traverseNode = everything (<>) (([] :: [Literal]) `mkQ` traverseLExpr) - ------------------------------------------ DECLARATIONS ----------------------------------------- --- | Find all Literals in a Declaration. -traverseLDecl :: LHsDecl GhcPs -> [Literal] -traverseLDecl (L _ decls) = traverseDecl decls - -traverseDecl :: HsDecl GhcPs -> [Literal] -traverseDecl = \case - TyClD _ tcd -> traverseTyClDecl tcd - ValD _ hsBind -> traverseBind hsBind - SpliceD _ spliceDecl -> traverseSpliceDecl spliceDecl - -- don't think this is necessary - AnnD _ annDecl -> traverseAnnDecl annDecl - RuleD _ ruleDecl -> traverseRuleDecls ruleDecl - -------------------------------------------------- - _ -> [] - -traverseTyClDecl :: TyClDecl GhcPs -> [Literal] -traverseTyClDecl = \case - ClassDecl{tcdMeths} -> concatMap traverseLBind tcdMeths - _ -> [] - -traverseAnnDecl :: AnnDecl GhcPs -> [Literal] -traverseAnnDecl = \case - HsAnnotation _ _ _ expr -> traverseLExpr expr - _ -> [] - -traverseSpliceDecl :: SpliceDecl GhcPs -> [Literal] -traverseSpliceDecl = \case - SpliceDecl _ splice _ -> traverseLSplice splice - _ -> [] - -traverseRuleDecls :: RuleDecls GhcPs -> [Literal] -traverseRuleDecls = \case - HsRules _ _ ruleDecls -> concatMap traverseLRuleDecl ruleDecls - _ -> [] - -traverseLRuleDecl :: LRuleDecl GhcPs -> [Literal] -traverseLRuleDecl = traverseRuleDecl . unLoc +collectLiterals :: (Data ast, Typeable ast) => ast -> [Literal] +collectLiterals = everything (<>) (mkQ2 ([] :: [Literal]) traverseLExpr traverseLPat) -traverseRuleDecl :: RuleDecl GhcPs -> [Literal] -traverseRuleDecl = \case - HsRule{..} -> concatMap traverseLExpr [rd_lhs, rd_rhs] - _ -> [] ----------------------------------------------------------------------------------- +-- Located Patterns for whatever reason don't get picked up when using `(mkQ ([] :: [Literal]) traverseLExpr) +-- as such we need to explicit traverse those in order to pull out any literals +mkQ2 :: (Typeable a, Typeable b, Typeable c) => r -> (b -> r) -> (c -> r) -> a -> r +mkQ2 def left right datum = case cast datum of + Just datum' -> left datum' + Nothing -> maybe def right (cast datum) -traverseLBind :: LHsBindLR idL GhcPs -> [Literal] -traverseLBind = traverseBind . unLoc - -traverseBind :: HsBindLR idL GhcPs -> [Literal] -traverseBind = \case - FunBind{fun_matches} -> traverseMatchGroup fun_matches - VarBind{var_rhs} -> traverseLExpr var_rhs - _ -> [] - -traverseMatchGroup :: Traverse p => MatchGroup GhcPs p -> [Literal] -traverseMatchGroup = \case - MG _ matches _ -> concatMap traverseLMatch $ unLoc matches - _ -> [] - -traverseLMatch :: Traverse p => LMatch GhcPs p -> [Literal] -traverseLMatch = traverseMatch . unLoc - -traverseMatch :: Traverse p => Match GhcPs p -> [Literal] -traverseMatch = \case - Match{..} -> concatMap traverseLPat m_pats <> traverseGRHSs m_grhss - _ -> [] traverseLPat :: LPat GhcPs -> [Literal] traverseLPat (L sSpan pat) = traversePat sSpan pat traversePat :: SrcSpan -> Pat GhcPs -> [Literal] traversePat sSpan = \case - LazyPat _ lpat -> traverseLPat lpat - AsPat _ _ lpat -> traverseLPat lpat - ParPat _ lpat -> traverseLPat lpat - -- TODO: Do we bother with patterns like this? BangPatterns will never have literals - BangPat _ lpat -> traverseLPat lpat - ListPat _ lpats -> concatMap traverseLPat lpats - TuplePat _ lpats _ -> concatMap traverseLPat lpats - SumPat _ lpat _ _ -> traverseLPat lpat - -- ConPat replaced these two in at least ghc-9.2.1 lib - ConPatIn _ details -> concatMap traverseLPat ( hsConPatArgs details) - ConPatOut{pat_args} -> concatMap traverseLPat ( hsConPatArgs pat_args) - ------------------------------------------------------------------- - ViewPat _ expr lpat -> traverseLExpr expr <> traverseLPat lpat - SplicePat _ splice -> traverseSplice sSpan splice - LitPat _ lit -> getLiteralAsList sSpan lit - NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteralAsList olSpan overLit - <> maybe [] (traverseSynExpr sSpan) sexpr1 - <> traverseSynExpr sSpan sexpr2 - NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteralAsList olSpan loverLit - <> getOverLiteralAsList sSpan overLit - <> traverseSynExpr sSpan sexpr1 - <> traverseSynExpr sSpan sexpr2 - SigPat _ lpat _ -> traverseLPat lpat - CoPat _ _ pat _ -> traversePat sSpan pat - _ -> [] - -traverseGRHSs :: Traverse p => GRHSs GhcPs p -> [Literal] -traverseGRHSs = \case - GRHSs{..} -> concatMap traverseLGRHS grhssGRHSs <> traverseLLocalBinds grhssLocalBinds - _ -> [] - -traverseLGRHS :: Traverse p => LGRHS GhcPs p -> [Literal] -traverseLGRHS = traverseGRHS . unLoc - -traverseGRHS :: Traverse p => GRHS GhcPs p -> [Literal] -traverseGRHS = \case - GRHS _ guards rhs -> traverseTree rhs <> concatMap traverseLStmt guards - _ -> [] - -traverseLLocalBinds :: LHsLocalBinds GhcPs -> [Literal] -traverseLLocalBinds = traverseLocalBinds . unLoc - -traverseLocalBinds :: HsLocalBinds GhcPs -> [Literal] -traverseLocalBinds = \case - HsValBinds _ valBinds -> traverseValBinds valBinds - _ -> [] - -traverseValBinds :: HsValBindsLR idL GhcPs -> [Literal] -traverseValBinds = \case - ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds - _ -> [] - -traverseLStmt :: Traverse p => LStmt GhcPs p -> [Literal] -traverseLStmt (L sSpan stmt) = traverseStmt sSpan stmt - -traverseStmt :: Traverse p => SrcSpan -> Stmt GhcPs p -> [Literal] -traverseStmt sSpan = \case - LastStmt _ expr _ sexpr -> traverseTree expr <> traverseSynExpr sSpan sexpr - BindStmt _ lpat expr sexpr1 sexpr2 -> traverseLPat lpat <> traverseTree expr <> concatMap (traverseSynExpr sSpan) [sexpr1, sexpr2] - ApplicativeStmt _ appPairs sexpr -> concatMap (traverseAppPair sSpan) appPairs <> maybe [] (traverseSynExpr sSpan) sexpr - BodyStmt _ expr sexpr1 sexpr2 -> traverseTree expr <> traverseSynExpr sSpan sexpr1 <> traverseSynExpr sSpan sexpr2 - LetStmt _ locBinds -> traverseLLocalBinds locBinds - ParStmt _ parStmts expr sexpr -> concatMap (traverseParStmtBlock sSpan) parStmts <> traverseExpr sSpan expr <> traverseSynExpr sSpan sexpr - TransStmt{..} -> concatMap traverseLStmt trS_stmts <> traverseLExpr trS_using - <> maybe [] traverseLExpr trS_by <> traverseExpr sSpan trS_fmap - <> concatMap (traverseSynExpr sSpan) [trS_ret, trS_bind] - RecStmt{..} -> concatMap traverseLStmt recS_stmts - <> concatMap (traverseSynExpr sSpan) [recS_bind_fn, recS_ret_fn, recS_mfix_fn] - _ -> [] - -traverseParStmtBlock :: SrcSpan -> ParStmtBlock GhcPs GhcPs -> [Literal] -traverseParStmtBlock sSpan = \case - ParStmtBlock _ stmts _ sexpr -> concatMap traverseLStmt stmts <> traverseSynExpr sSpan sexpr - _ -> [] + LitPat _ lit -> getLiteralAsList sSpan lit + NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteralAsList olSpan overLit + <> collectLiterals sexpr1 + <> collectLiterals sexpr2 + NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteralAsList olSpan loverLit + <> getOverLiteralAsList sSpan overLit + <> collectLiterals sexpr1 + <> collectLiterals sexpr2 + ast -> collectLiterals ast traverseLExpr :: LHsExpr GhcPs -> [Literal] traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr @@ -211,104 +72,7 @@ traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] traverseExpr sSpan = \case HsOverLit _ overLit -> getOverLiteralAsList sSpan overLit HsLit _ lit -> getLiteralAsList sSpan lit - _ -> [] - -- _ -> traverseNode expr - -traverseLCmdTop :: LHsCmdTop GhcPs -> [Literal] -traverseLCmdTop = traverseCmdTop . unLoc - -traverseCmdTop :: HsCmdTop GhcPs -> [Literal] -traverseCmdTop = \case - HsCmdTop _ cmds -> traverseLCmd cmds - _ -> [] - -traverseLCmd :: LHsCmd GhcPs -> [Literal] -traverseLCmd (L sSpan cmd) = traverseCmd sSpan cmd - -traverseCmd :: SrcSpan -> HsCmd GhcPs -> [Literal] -traverseCmd sSpan = \case - HsCmdArrApp _ expr1 expr2 _ _ -> concatMap traverseLExpr [expr1, expr2] - HsCmdArrForm _ expr _ _ cmdTops -> traverseLExpr expr <> concatMap traverseLCmdTop cmdTops - HsCmdApp _ cmd expr -> traverseLCmd cmd <> traverseLExpr expr - HsCmdLam _ group -> traverseMatchGroup group - HsCmdPar _ cmd -> traverseLCmd cmd - HsCmdCase _ expr group -> traverseTree expr <> traverseMatchGroup group - HsCmdIf _ sexpr expr cmd1 cmd2 -> maybe [] (traverseSynExpr sSpan) sexpr <> traverseLExpr expr <> concatMap traverseLCmd [cmd1, cmd2] - HsCmdLet _ locBinds cmd -> traverseLLocalBinds locBinds <> traverseLCmd cmd - HsCmdDo _ cmdStmts -> concatMap traverseLStmt (unLoc cmdStmts) - HsCmdWrap _ _ cmd -> traverseCmd sSpan cmd - _ -> [] - -traverseBrackets :: HsBracket GhcPs -> [Literal] -traverseBrackets = \case - ExpBr _ expr -> traverseLExpr expr - PatBr _ lpat -> traverseLPat lpat - DecBrL _ decls -> concatMap traverseLDecl decls - DecBrG _ hsGroup -> traverseHsGroup hsGroup - TExpBr _ expr -> traverseLExpr expr - _ -> [] - -traverseHsGroup :: HsGroup GhcPs -> [Literal] -traverseHsGroup = \case - HsGroup{hs_valds} -> case hs_valds of - ValBinds _ hsBinds _ -> concatMap traverseLBind hsBinds - _ -> [] - _ -> [] - -traverseArithSeqInfo :: ArithSeqInfo GhcPs -> [Literal] -traverseArithSeqInfo = \case - From expr -> traverseLExpr expr - FromThen expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - FromTo expr1 expr2 -> concatMap traverseLExpr [expr1, expr2] - FromThenTo expr1 expr2 expr3 -> concatMap traverseLExpr [expr1, expr2, expr3] - -traverseLRecordUpdate :: LHsRecUpdField GhcPs -> [Literal] -traverseLRecordUpdate = traverseRecordUpdate . unLoc - -traverseRecordUpdate :: HsRecUpdField GhcPs -> [Literal] -traverseRecordUpdate HsRecField{..} = traverseLExpr hsRecFieldArg - -traverseRecordBinds :: HsRecordBinds GhcPs -> [Literal] -traverseRecordBinds HsRecFields{..} = concatMap traverseLRecordField rec_flds - -traverseLRecordField :: Traverse p => LHsRecField GhcPs p -> [Literal] -traverseLRecordField = traverseRecordField . unLoc - -traverseRecordField :: Traverse p => HsRecField GhcPs p -> [Literal] -traverseRecordField HsRecField{..} = traverseTree hsRecFieldArg - -traverseAppPair :: SrcSpan -> (SyntaxExpr GhcPs, ApplicativeArg GhcPs) -> [Literal] -traverseAppPair sSpan (sexpr, appArg) = traverseSynExpr sSpan sexpr <> traverseAppArg sSpan appArg - -traverseAppArg :: SrcSpan -> ApplicativeArg GhcPs -> [Literal] -traverseAppArg sSpan = \case - ApplicativeArgOne{..}-> traverseLPat app_arg_pattern <> traverseLExpr arg_expr <> traverseSynExpr sSpan fail_operator - ApplicativeArgMany{..}-> concatMap traverseLStmt app_stmts <> traverseExpr sSpan final_expr <> traverseLPat bv_pattern - _ -> [] - -traverseLTuple :: LHsTupArg GhcPs -> [Literal] -traverseLTuple = traverseTuple . unLoc - -traverseTuple :: HsTupArg GhcPs -> [Literal] -traverseTuple = \case - Present _ expr -> traverseLExpr expr - _ -> [] - -traverseLSplice :: Located (HsSplice GhcPs) -> [Literal] -traverseLSplice (L sSpan splice) = traverseSplice sSpan splice - -traverseSplice :: SrcSpan -> HsSplice GhcPs -> [Literal] -traverseSplice sSpan = \case - HsTypedSplice _ _ _ expr -> traverseLExpr expr - HsUntypedSplice _ _ _ expr -> traverseLExpr expr - HsSpliced _ _ st -> case st of - HsSplicedExpr expr -> traverseExpr sSpan expr - HsSplicedPat pat -> traversePat sSpan pat - _ ->[] - _ -> [] - -traverseSynExpr :: SrcSpan -> SyntaxExpr GhcPs -> [Literal] -traverseSynExpr sSpan SyntaxExpr{syn_expr} = traverseExpr sSpan syn_expr + expr -> collectLiterals expr getLiteralAsList :: SrcSpan -> HsLit GhcPs -> [Literal] getLiteralAsList sSpan = maybeToList . getLiteral sSpan From ec0463eb402be2f1e99ba61eaff8ac64c5631962 Mon Sep 17 00:00:00 2001 From: Nick Suchecki <40047416+drsooch@users.noreply.github.com> Date: Wed, 17 Nov 2021 21:18:08 -0500 Subject: [PATCH 17/32] Update hls-alternate-number-format-plugin.cabal --- .../hls-alternate-number-format-plugin.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index af12bff1f1..62bcad254c 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -48,7 +48,7 @@ test-suite tests main-is: Main.hs ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts build-depends: - , base >=4.13 && < 5 + , base >=4.12 && < 5 , filepath , hls-alternate-number-format-plugin , hls-test-utils >=1.0 && <1.2 From ed99b6af037b4fedc94aac40e23e7219e98815cb Mon Sep 17 00:00:00 2001 From: Fendor Date: Thu, 18 Nov 2021 15:54:28 +0100 Subject: [PATCH 18/32] WIP: run tests --- .../test/Main.hs | 14 ++++++++++---- .../test/testdata/TIntDtoH.expected.hs | 2 ++ .../test/testdata/TIntDtoH.hs | 2 ++ .../test/testdata/hie.yaml | 7 +++++++ 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index 9347fcdd7d..df5750f83c 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -3,9 +3,11 @@ {-# LANGUAGE ViewPatterns #-} module Main ( main ) where +import Control.Concurrent (threadDelay) import Data.List (find) import Data.Text (Text) import qualified Data.Text as T +import Debug.Trace import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat import qualified Ide.Plugin.Conversion as Conversion import System.FilePath (()) @@ -20,7 +22,7 @@ alternateNumberFormatPlugin = AlternateNumberFormat.descriptor "alternateNumberF test :: TestTree test = testGroup "alternateNumberFormat" [ - codeActionHex "TIntDtoH" 3 13] + codeActionHex "TIntDtoH" 4 13] testDataDir :: FilePath testDataDir = "test" "testdata" @@ -32,9 +34,13 @@ goldenAlternateFormat fp = goldenWithHaskellDoc alternateNumberFormatPlugin (fp codeActionTest :: (Maybe Text -> Bool) -> FilePath -> Int -> Int -> TestTree codeActionTest filter' fp line col = goldenAlternateFormat fp $ \doc -> do - actions <- getAllCodeActions doc + -- _ <- waitForDiagnostics + actions <- getCodeActions doc (Range (Position 4 12) (Position 4 14)) + case actions of + InR action:_ -> executeCodeAction action + _ -> pure () + traceM $ "Code actions: " ++ show actions -- can't generate code actions? - liftIO $ assertBool "Actions is Not Null" (not $ null actions) -- case find (filter' . caTitle) actions of -- Just (InR x) -> executeCodeAction x -- _ -> liftIO $ assertFailure "Unable to find CodeAction" @@ -66,7 +72,7 @@ numDecimalRegex = intoInfix <> Conversion.numDecimalRegex decimalRegex = intoInfix <> Conversion.decimalRegex isCodeAction :: Text -> Maybe Text -> Bool -isCodeAction userRegex (Just txt) = txt =~ Conversion.wrap (convertPrefix <> userRegex) +isCodeAction userRegex (Just txt) = txt =~ Conversion.matchLineRegex (convertPrefix <> userRegex) isCodeAction _ _ = False isHexCodeAction :: Maybe Text -> Bool diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs index b974c16d98..835dc00893 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs @@ -1,3 +1,5 @@ module TIntDtoH where +import Prelude + convertMe = 0xC diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs index 07fef56ab7..f1dda3592a 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs @@ -1,3 +1,5 @@ module TIntDtoH where +import Prelude + convertMe = 12 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml new file mode 100644 index 0000000000..5ff2e544af --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml @@ -0,0 +1,7 @@ +cradle: + direct: + arguments: + - -i + - -i. + - TIntDtoH + - -Wall From 8e0cb4a0075919c19d5a192bc70adf8459e20a88 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 20 Nov 2021 19:04:52 -0500 Subject: [PATCH 19/32] Test additions and GHC compatability changes. --- .../hls-alternate-number-format-plugin.cabal | 6 ++- .../src/Ide/Plugin/Conversion.hs | 12 +++++- .../src/Ide/Plugin/Literals.hs | 5 +-- .../test/Main.hs | 23 ++++++----- .../test/Properties/Conversion.hs | 38 +++++++++++++++++++ 5 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/test/Properties/Conversion.hs diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 62bcad254c..a78ef0874c 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -20,7 +20,7 @@ library build-depends: aeson , base >=4.12 && < 5 - , ghcide >=1.2 && <1.5 + , ghcide >=1.5.0 && <1.6 , ghc-boot-th , hls-graph , hls-plugin-api >=1.1 && < 1.3 @@ -36,6 +36,7 @@ library default-language: Haskell2010 default-extensions: + CPP LambdaCase NamedFieldPuns OverloadedStrings @@ -45,6 +46,7 @@ test-suite tests type: exitcode-stdio-1.0 default-language: Haskell2010 hs-source-dirs: test + other-modules: Properties.Conversion main-is: Main.hs ghc-options: -threaded -rtsopts -with-rtsopts=-N -fno-ignore-asserts build-depends: @@ -53,6 +55,8 @@ test-suite tests , hls-alternate-number-format-plugin , hls-test-utils >=1.0 && <1.2 , regex-tdfa + , QuickCheck + , tasty-quickcheck , text default-extensions: diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index cc35aaafb5..45bb082a1c 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -10,6 +10,14 @@ module Ide.Plugin.Conversion ( , matchLineRegex , toFormatTypes , FormatType + , generateNumDecimal + , toNumDecimal + , toBinary + , toOctal + , toHex + , toHexFloat + , toFloatDecimal + , toFloatExpDecimal ) where import Data.Char (toUpper) @@ -90,7 +98,7 @@ hexRegex = "0[xX][a-fA-F0-9]+" -- | Regex to match a Haskell Hex Float Literal hexFloatRegex :: Text -hexFloatRegex = "0[xX][a-fA-F0-9]+\\.[a-fA-F0-9]+(p[+-]?[0-9]+)?" +hexFloatRegex = "0[xX][a-fA-F0-9]+(\\.)?[a-fA-F0-9]*(p[+-]?[0-9]+)?" -- | Regex to match a Haskell Binary Literal binaryRegex :: Text @@ -102,7 +110,7 @@ octalRegex = "0[oO][0-8]+" -- | Regex to match a Haskell Decimal Literal (no decimal points) decimalRegex :: Text -decimalRegex = "[0-9]+" +decimalRegex = "[0-9]+(\\.[0-9]+)?" -- | Regex to match a Haskell Literal with an explicit exponent numDecimalRegex :: Text diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 9f827b69f1..0fd2ae48e0 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -49,8 +49,7 @@ mkQ2 def left right datum = case cast datum of Just datum' -> left datum' Nothing -> maybe def right (cast datum) - -traverseLPat :: LPat GhcPs -> [Literal] +traverseLPat :: GenLocated SrcSpan (Pat GhcPs) -> [Literal] traverseLPat (L sSpan pat) = traversePat sSpan pat traversePat :: SrcSpan -> Pat GhcPs -> [Literal] @@ -65,7 +64,7 @@ traversePat sSpan = \case <> collectLiterals sexpr2 ast -> collectLiterals ast -traverseLExpr :: LHsExpr GhcPs -> [Literal] +traverseLExpr :: GenLocated SrcSpan (HsExpr GhcPs) -> [Literal] traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index df5750f83c..3053a2845a 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -10,6 +10,7 @@ import qualified Data.Text as T import Debug.Trace import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat import qualified Ide.Plugin.Conversion as Conversion +import Properties.Conversion import System.FilePath (()) import Test.Hls import Text.Regex.TDFA ((=~)) @@ -22,7 +23,8 @@ alternateNumberFormatPlugin = AlternateNumberFormat.descriptor "alternateNumberF test :: TestTree test = testGroup "alternateNumberFormat" [ - codeActionHex "TIntDtoH" 4 13] + -- codeActionHex "TIntDtoH" 4 13 + conversions ] testDataDir :: FilePath testDataDir = "test" "testdata" @@ -35,15 +37,12 @@ goldenAlternateFormat fp = goldenWithHaskellDoc alternateNumberFormatPlugin (fp codeActionTest :: (Maybe Text -> Bool) -> FilePath -> Int -> Int -> TestTree codeActionTest filter' fp line col = goldenAlternateFormat fp $ \doc -> do -- _ <- waitForDiagnostics - actions <- getCodeActions doc (Range (Position 4 12) (Position 4 14)) - case actions of - InR action:_ -> executeCodeAction action - _ -> pure () + actions <- getCodeActions doc (pointRange line col) traceM $ "Code actions: " ++ show actions -- can't generate code actions? --- case find (filter' . caTitle) actions of --- Just (InR x) -> executeCodeAction x --- _ -> liftIO $ assertFailure "Unable to find CodeAction" + case find (filter' . codeActionTitle) actions of + Just (InR x) -> executeCodeAction x + _ -> liftIO $ assertFailure "Unable to find CodeAction" codeActionHex :: FilePath -> Int -> Int -> TestTree codeActionHex = codeActionTest isHexCodeAction @@ -51,15 +50,15 @@ codeActionHex = codeActionTest isHexCodeAction codeActionFloatHex :: FilePath -> Int -> Int -> TestTree codeActionFloatHex = codeActionTest isHexFloatCodeAction -caTitle :: (Command |? CodeAction) -> Maybe Text -caTitle (InR CodeAction {_title}) = Just _title -caTitle _ = Nothing +codeActionTitle :: (Command |? CodeAction) -> Maybe Text +codeActionTitle (InR CodeAction {_title}) = Just _title +codeActionTitle _ = Nothing pointRange :: Int -> Int -> Range pointRange (subtract 1 -> line) (subtract 1 -> col) = - Range (Position line col) (Position line $ col + 2) + Range (Position line col) (Position line $ col + 1) convertPrefix, intoInfix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, numDecimalRegex, decimalRegex :: Text convertPrefix = "Convert (" <> T.intercalate "|" [Conversion.hexRegex, Conversion.hexFloatRegex, Conversion.binaryRegex, Conversion.octalRegex, Conversion.numDecimalRegex, Conversion.decimalRegex] <> ")" diff --git a/plugins/hls-alternate-number-format-plugin/test/Properties/Conversion.hs b/plugins/hls-alternate-number-format-plugin/test/Properties/Conversion.hs new file mode 100644 index 0000000000..bba32e8850 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/Properties/Conversion.hs @@ -0,0 +1,38 @@ +{-# LANGUAGE TypeApplications #-} +module Properties.Conversion where + +import Ide.Plugin.Conversion +import Test.Hls (TestTree, testGroup) +import Test.Tasty.QuickCheck (testProperty) +import Text.Regex.TDFA ((=~)) + +conversions :: TestTree +conversions = testGroup "Conversions" $ map (uncurry testProperty) [("Match NumDecimal", prop_regexMatchesNumDecimal) + , ("Match Hex", prop_regexMatchesHex) + , ("Match Octal", prop_regexMatchesOctal) + , ("Match Binary", prop_regexMatchesBinary) + ] <> map (uncurry testProperty) [("Match HexFloat", prop_regexMatchesHexFloat @Double) + , ("Match FloatDecimal", prop_regexMatchesFloatDecimal) + , ("Match FloatExpDecimal", prop_regexMatchesFloatExpDecimal) + ] + +prop_regexMatchesNumDecimal :: Integer -> Bool +prop_regexMatchesNumDecimal = all (=~ numDecimalRegex) . generateNumDecimal + +prop_regexMatchesHex :: (Integral a, Show a) => a -> Bool +prop_regexMatchesHex = (=~ hexRegex ) . toHex + +prop_regexMatchesOctal :: (Integral a, Show a) => a -> Bool +prop_regexMatchesOctal = (=~ octalRegex) . toOctal + +prop_regexMatchesBinary :: (Integral a, Show a) => a -> Bool +prop_regexMatchesBinary = (=~ binaryRegex) . toBinary + +prop_regexMatchesHexFloat :: (RealFloat a) => a -> Bool +prop_regexMatchesHexFloat = (=~ hexFloatRegex) . toHexFloat + +prop_regexMatchesFloatDecimal :: (RealFloat a) => a -> Bool +prop_regexMatchesFloatDecimal = (=~ decimalRegex ) . toFloatDecimal + +prop_regexMatchesFloatExpDecimal :: (RealFloat a) => a -> Bool +prop_regexMatchesFloatExpDecimal = (=~ numDecimalRegex ) . toFloatExpDecimal From 9dd1ba85c509ee428ebd90cc10a7823963379e84 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 21 Nov 2021 00:25:25 -0500 Subject: [PATCH 20/32] Removed dead code. PrimLiterals were defined originally, however GHC source doesn't provide the source text. This is one of the needs of the plugin so we don't provide duplicate suggestions. Swapped `Maybe Text` to `Text`. Similar to above we now ignore all literals that have no source text attached. Swapped `Maybe SrcSpan` to `RealSrcSpan`. Again, similar to the previous points we now ignore literals that don't get a sourceSpan attached. Similarly, we drop any `UselessSpan`'s as those are also not very helpful. --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 27 ++++--- .../src/Ide/Plugin/Conversion.hs | 15 ++-- .../src/Ide/Plugin/Literals.hs | 78 ++++++++++--------- 3 files changed, 60 insertions(+), 60 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 1d76ef4d34..2cb2315379 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -15,9 +15,9 @@ import qualified Data.Text as T import Development.IDE (GetParsedModule (GetParsedModule), IdeState, RuleResult, Rules, define, ideLogger, - isInsideSrcSpan, noRange, - runAction, - srcSpanToRange, use, + noRange, + realSrcSpanToRange, + runAction, use, useWithStale) import Development.IDE.Core.PositionMapping (PositionMapping) import Development.IDE.GHC.Compat hiding (getSrcSpan) @@ -77,7 +77,7 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ nfp <- getNormalizedFilePath docId CLR{..} <- requestLiterals state nfp -- remove any invalid literals (see validTarget comment) - let litsInRange = filter validTarget literals + let litsInRange = filter inCurrentRange literals -- generate alternateFormats and zip with the literal that generated the alternates literalPairs = map (\lit -> (lit, alternateFormat formatTypes lit)) litsInRange -- make a code action for every literal and its' alternates (then flatten the result) @@ -88,17 +88,13 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ pure $ List actions where - getSrcTextDefault = fromMaybe "" . getSrcText - -- for now we ignore literals with no attached source text/span (TH I believe) - validTarget :: Literal -> Bool - validTarget lit = let srcSpan = getSrcSpan lit + inCurrentRange :: Literal -> Bool + inCurrentRange lit = let srcSpan = getSrcSpan lit in currRange `contains` srcSpan - && isJust (getSrcText lit) - && isRealSrcSpan srcSpan mkCodeAction :: NormalizedFilePath -> Literal -> Text -> Command |? CodeAction mkCodeAction nfp lit alt = InR CodeAction { - _title = "Convert " <> getSrcTextDefault lit <> " into " <> alt + _title = "Convert " <> getSrcText lit <> " into " <> alt -- what should this actually be? , _kind = Just $ CodeActionUnknown "alternate.style" , _diagnostics = Nothing @@ -113,12 +109,15 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ mkWorkspaceEdit nfp lit alt = WorkspaceEdit changes Nothing Nothing where -- NOTE: currently our logic filters our any noRange possibilities - txtEdit = TextEdit (fromMaybe noRange $ srcSpanToRange $ getSrcSpan lit) alt + txtEdit = TextEdit (realSrcSpanToRange $ getSrcSpan lit) alt changes = Just $ HashMap.fromList [( filePathToUri $ fromNormalizedFilePath nfp, List [txtEdit])] -- from HaddockComments.hs -contains :: Range -> SrcSpan -> Bool -contains Range {_start, _end} x = isInsideSrcSpan _start x || isInsideSrcSpan _end x +contains :: Range -> RealSrcSpan -> Bool +contains Range {_start, _end} x = isInsideRealSrcSpan _start x || isInsideRealSrcSpan _end x + +isInsideRealSrcSpan :: Position -> RealSrcSpan -> Bool +p `isInsideRealSrcSpan` r = let (Range sp ep) = realSrcSpanToRange r in sp <= p && p <= ep -- a source span that provides no meaningful information is NOT a valid source span for our use case isRealSrcSpan :: SrcSpan -> Bool diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index 45bb082a1c..92d63ab7e2 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -64,11 +64,10 @@ instance NFData AnyFormatType -- | Generate alternate formats for a single Literal based on FormatType's given. alternateFormat :: [FormatType] -> Literal -> [Text] alternateFormat fmts lit = case lit of - IntLiteral _ (Just _) val -> concatMap (alternateIntFormat val) (removeCurrentFormat lit fmts) - FracLiteral _ (Just _) val -> if denominator val == 1 -- floats that can be integers we can represent as ints + IntLiteral _ _ val -> concatMap (alternateIntFormat val) (removeCurrentFormat lit fmts) + FracLiteral _ _ val -> if denominator val == 1 -- floats that can be integers we can represent as ints then concatMap (alternateIntFormat (numerator val)) (removeCurrentFormat lit fmts) else concatMap (alternateFracFormat val) (removeCurrentFormat lit fmts) - _ -> [] -- This means there is no Source Text so we just ignore it alternateIntFormat :: Integer -> FormatType -> [Text] alternateIntFormat val fmt = case fmt of @@ -88,9 +87,8 @@ alternateFracFormat val fmt = case fmt of _ -> [] removeCurrentFormat :: Literal -> [FormatType] -> [FormatType] -removeCurrentFormat lit fmts = case getSrcText lit of - Just src -> foldl (flip delete) fmts (sourceToFormatType src) - Nothing -> fmts +removeCurrentFormat lit fmts = let srcText = getSrcText lit + in foldl (flip delete) fmts (sourceToFormatType srcText) -- | Regex to match a Haskell Hex Literal hexRegex :: Text @@ -136,8 +134,9 @@ sourceToFormatType srcText -- | Translate a list of Extensions into Format Types (plus a base set of Formats) toFormatTypes :: [Extension] -> [FormatType] -toFormatTypes = (<>) [IntFormat HexFormat, IntFormat OctalFormat, FracFormat ExponentFormat, AnyFormat DecimalFormat] - . mapMaybe (`lookup` numericPairs) +toFormatTypes = (<>) baseFormatTypes . mapMaybe (`lookup` numericPairs) + where + baseFormatTypes = [IntFormat HexFormat, IntFormat OctalFormat, FracFormat ExponentFormat, AnyFormat DecimalFormat] -- current list of Numeric related extensions -- LexicalNegation --- 9.0.1 > --- superset of NegativeLiterals diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 0fd2ae48e0..72e81daf6f 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -3,40 +3,37 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE RankNTypes #-} module Ide.Plugin.Literals where -import Data.Maybe (maybeToList) +import Data.Maybe (fromMaybe, maybeToList) import Data.Text (Text) import qualified Data.Text as T import Development.IDE.GHC.Compat import Development.IDE.GHC.Util (unsafePrintSDoc) -import Development.IDE.Graph.Classes (NFData) +import Development.IDE.Graph.Classes (NFData (rnf)) import qualified GHC.Generics as GHC -import Generics.SYB +import Generics.SYB (Data, Typeable, cast, + everything) -- data type to capture what type of literal we are dealing with -- provides location and possibly source text (for OverLits) as well as it's value -- we currently don't have any use for PrimLiterals. They never have source text so we always drop them -data Literal = IntLiteral SrcSpan (Maybe Text) Integer - | FracLiteral SrcSpan (Maybe Text) Rational - | IntPrimLiteral SrcSpan (Maybe Text) Integer - | FracPrimLiteral SrcSpan (Maybe Text) Rational +data Literal = IntLiteral RealSrcSpan Text Integer + | FracLiteral RealSrcSpan Text Rational deriving (GHC.Generic, Show) +instance NFData RealSrcSpan where + rnf x = x `seq` () + instance NFData Literal -getSrcText :: Literal -> Maybe Text +getSrcText :: Literal -> Text getSrcText = \case - IntLiteral _ txt _ -> txt - FracLiteral _ txt _ -> txt - IntPrimLiteral _ txt _ -> txt - FracPrimLiteral _ txt _ -> txt + IntLiteral _ txt _ -> txt + FracLiteral _ txt _ -> txt -getSrcSpan :: Literal -> SrcSpan +getSrcSpan :: Literal -> RealSrcSpan getSrcSpan = \case - IntLiteral ss _ _ -> ss - FracLiteral ss _ _ -> ss - IntPrimLiteral ss _ _ -> ss - FracPrimLiteral ss _ _ -> ss - + IntLiteral ss _ _ -> ss + FracLiteral ss _ _ -> ss -- | Find all literals in a Parsed Source File collectLiterals :: (Data ast, Typeable ast) => ast -> [Literal] @@ -74,37 +71,42 @@ traverseExpr sSpan = \case expr -> collectLiterals expr getLiteralAsList :: SrcSpan -> HsLit GhcPs -> [Literal] -getLiteralAsList sSpan = maybeToList . getLiteral sSpan +getLiteralAsList sSpan lit = case sSpan of + RealSrcSpan rss _ -> getLiteralAsList' lit rss + _ -> [] + +getLiteralAsList' :: HsLit GhcPs -> RealSrcSpan -> [Literal] +getLiteralAsList' lit = maybeToList . flip getLiteral lit -- Translate from Hs Type to our Literal type -getLiteral :: SrcSpan -> HsLit GhcPs -> Maybe Literal +getLiteral :: RealSrcSpan -> HsLit GhcPs -> Maybe Literal getLiteral sSpan = \case - HsInt _ val -> Just $ fromIntegralLit sSpan val - HsIntPrim _ val -> Just $ IntPrimLiteral sSpan Nothing val - HsWordPrim _ val -> Just $ IntPrimLiteral sSpan Nothing val - HsInt64Prim _ val -> Just $ IntPrimLiteral sSpan Nothing val - HsWord64Prim _ val -> Just $ IntPrimLiteral sSpan Nothing val - HsInteger _ val _ -> Just $ IntLiteral sSpan Nothing val - HsRat _ val _ -> Just $ fromFractionalLit sSpan val - HsFloatPrim _ (FL _ _ val) -> Just $ FracPrimLiteral sSpan Nothing val - HsDoublePrim _ (FL _ _ val) -> Just $ FracPrimLiteral sSpan Nothing val - _ -> Nothing + HsInt _ val -> fromIntegralLit sSpan val +-- Ignore this case for now +-- HsInteger _ val _ -> Just $ IntLiteral sSpan Nothing val + HsRat _ val _ -> fromFractionalLit sSpan val + _ -> Nothing getOverLiteralAsList :: SrcSpan -> HsOverLit GhcPs -> [Literal] -getOverLiteralAsList sSpan = maybeToList . getOverLiteral sSpan +getOverLiteralAsList sSpan lit = case sSpan of + RealSrcSpan rss _ -> getOverLiteralAsList' lit rss + _ -> [] + +getOverLiteralAsList' :: HsOverLit GhcPs -> RealSrcSpan -> [Literal] +getOverLiteralAsList' lit = maybeToList . flip getOverLiteral lit -getOverLiteral :: SrcSpan -> HsOverLit GhcPs -> Maybe Literal +getOverLiteral :: RealSrcSpan -> HsOverLit GhcPs -> Maybe Literal getOverLiteral sSpan OverLit{..} = case ol_val of - HsIntegral il -> Just $ fromIntegralLit sSpan il - HsFractional fl -> Just $ fromFractionalLit sSpan fl + HsIntegral il -> fromIntegralLit sSpan il + HsFractional fl -> fromFractionalLit sSpan fl _ -> Nothing getOverLiteral _ _ = Nothing -fromIntegralLit :: SrcSpan -> IntegralLit -> Literal -fromIntegralLit s (IL txt _ val) = IntLiteral s (fromSourceText txt) val +fromIntegralLit :: RealSrcSpan -> IntegralLit -> Maybe Literal +fromIntegralLit s (IL txt _ val) = fmap (\txt' -> IntLiteral s txt' val) (fromSourceText txt) -fromFractionalLit :: SrcSpan -> FractionalLit -> Literal -fromFractionalLit s (FL txt _ val) = FracLiteral s (fromSourceText txt) val +fromFractionalLit :: RealSrcSpan -> FractionalLit -> Maybe Literal +fromFractionalLit s (FL txt _ val) = fmap (\txt' -> FracLiteral s txt' val) (fromSourceText txt) fromSourceText :: SourceText -> Maybe Text fromSourceText = \case From 856cd9257109489d76a775e70bd5f9b2fc62e026 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 21 Nov 2021 18:28:51 -0500 Subject: [PATCH 21/32] Use Set to remove duplicates from CollectLiterals Result. Certain AST representations are traversed multiple times with the switch to SYB. Using Set allows to easily remove duplicate Literals from our result. Added a test suite to monitor for regressions. --- .../hls-alternate-number-format-plugin.cabal | 4 +- .../src/Ide/Plugin/AlternateNumberFormat.hs | 14 +--- .../src/Ide/Plugin/Literals.hs | 51 +++++++------ .../test/Main.hs | 75 +++++++++++++++++-- .../test/testdata/TFindLiteralDoLet.hs | 7 ++ .../test/testdata/TFindLiteralDoReturn.hs | 5 ++ .../test/testdata/TFindLiteralIntCase.hs | 4 + .../test/testdata/TFindLiteralIntCase2.hs | 5 ++ .../test/testdata/TFindLiteralIntPattern.hs | 5 ++ .../test/testdata/TFindLiteralList.hs | 3 + .../test/testdata/TFracDtoE.expected.hs | 3 + .../test/testdata/TFracDtoE.hs | 3 + .../test/testdata/TFracDtoHF.expected.hs | 4 + .../test/testdata/TFracDtoHF.hs | 4 + .../test/testdata/TFracHFtoD.expected.hs | 4 + .../test/testdata/TFracHFtoD.hs | 4 + .../test/testdata/TIntDtoB.expected.hs | 4 + .../test/testdata/TIntDtoB.hs | 4 + .../test/testdata/TIntDtoH.expected.hs | 2 - .../test/testdata/TIntDtoH.hs | 2 - .../test/testdata/TIntDtoND.expected.hs | 5 ++ .../test/testdata/TIntDtoND.hs | 5 ++ .../test/testdata/TIntDtoO.expected.hs | 3 + .../test/testdata/TIntDtoO.hs | 3 + .../test/testdata/TIntHtoD.expected.hs | 3 + .../test/testdata/TIntHtoD.hs | 3 + .../test/testdata/hie.yaml | 13 ++++ 27 files changed, 195 insertions(+), 47 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoLet.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoReturn.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase2.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntPattern.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralList.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.expected.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.hs diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index a78ef0874c..4803a680ae 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -20,6 +20,7 @@ library build-depends: aeson , base >=4.12 && < 5 + , containers , ghcide >=1.5.0 && <1.6 , ghc-boot-th , hls-graph @@ -54,8 +55,9 @@ test-suite tests , filepath , hls-alternate-number-format-plugin , hls-test-utils >=1.0 && <1.2 - , regex-tdfa + , lsp , QuickCheck + , regex-tdfa , tasty-quickcheck , text diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 2cb2315379..257e284ff4 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -12,10 +12,10 @@ import qualified Data.HashMap.Strict as HashMap import Data.Maybe (fromMaybe, isJust) import Data.Text (Text) import qualified Data.Text as T +import Debug.Trace (traceM) import Development.IDE (GetParsedModule (GetParsedModule), IdeState, RuleResult, Rules, define, ideLogger, - noRange, realSrcSpanToRange, runAction, use, useWithStale) @@ -83,8 +83,7 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ -- make a code action for every literal and its' alternates (then flatten the result) actions = concatMap (\(lit, alts) -> map (mkCodeAction nfp lit) alts) literalPairs - logIO state "Literals: " - mapM_ (logIO state) literals + logIO state $ "Literals: " <> show literals pure $ List actions where @@ -108,7 +107,6 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ mkWorkspaceEdit :: NormalizedFilePath -> Literal -> Text -> WorkspaceEdit mkWorkspaceEdit nfp lit alt = WorkspaceEdit changes Nothing Nothing where - -- NOTE: currently our logic filters our any noRange possibilities txtEdit = TextEdit (realSrcSpanToRange $ getSrcSpan lit) alt changes = Just $ HashMap.fromList [( filePathToUri $ fromNormalizedFilePath nfp, List [txtEdit])] @@ -119,12 +117,6 @@ contains Range {_start, _end} x = isInsideRealSrcSpan _start x || isInsideRealSr isInsideRealSrcSpan :: Position -> RealSrcSpan -> Bool p `isInsideRealSrcSpan` r = let (Range sp ep) = realSrcSpanToRange r in sp <= p && p <= ep --- a source span that provides no meaningful information is NOT a valid source span for our use case -isRealSrcSpan :: SrcSpan -> Bool -isRealSrcSpan (UnhelpfulSpan _) = False -isRealSrcSpan _ = True - - getNormalizedFilePath :: Monad m => TextDocumentIdentifier -> ExceptT String m NormalizedFilePath getNormalizedFilePath docId = handleMaybe "Error: converting to NormalizedFilePath" $ uriToNormalizedFilePath @@ -138,5 +130,5 @@ requestLiterals state = handleMaybeM "Error: Could not get ParsedModule" logIO :: (MonadIO m, Show a) => IdeState -> a -> m () -logIO state = liftIO . Logger.logDebug (ideLogger state) . T.pack . show +logIO state = liftIO . Logger.logInfo (ideLogger state) . T.pack . show diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 72e81daf6f..0aa5503f5c 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -4,6 +4,8 @@ {-# LANGUAGE RankNTypes #-} module Ide.Plugin.Literals where import Data.Maybe (fromMaybe, maybeToList) +import Data.Set (Set) +import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T import Development.IDE.GHC.Compat @@ -18,7 +20,7 @@ import Generics.SYB (Data, Typeable, cast, -- we currently don't have any use for PrimLiterals. They never have source text so we always drop them data Literal = IntLiteral RealSrcSpan Text Integer | FracLiteral RealSrcSpan Text Rational - deriving (GHC.Generic, Show) + deriving (GHC.Generic, Show, Ord, Eq) instance NFData RealSrcSpan where rnf x = x `seq` () @@ -37,46 +39,49 @@ getSrcSpan = \case -- | Find all literals in a Parsed Source File collectLiterals :: (Data ast, Typeable ast) => ast -> [Literal] -collectLiterals = everything (<>) (mkQ2 ([] :: [Literal]) traverseLExpr traverseLPat) +collectLiterals = S.toList . collectLiterals' --- Located Patterns for whatever reason don't get picked up when using `(mkQ ([] :: [Literal]) traverseLExpr) +collectLiterals' :: (Data ast, Typeable ast) => ast -> Set Literal +collectLiterals' = everything (<>) (mkQ2 (S.empty :: Set Literal) traverseLExpr traverseLPat) + +-- Located Patterns for whatever reason don't get picked up when using `(mkQ (S.empty :: Set Literal) traverseLExpr) -- as such we need to explicit traverse those in order to pull out any literals mkQ2 :: (Typeable a, Typeable b, Typeable c) => r -> (b -> r) -> (c -> r) -> a -> r mkQ2 def left right datum = case cast datum of - Just datum' -> left datum' - Nothing -> maybe def right (cast datum) + Just datum' -> left datum' + Nothing -> maybe def right (cast datum) -traverseLPat :: GenLocated SrcSpan (Pat GhcPs) -> [Literal] +traverseLPat :: GenLocated SrcSpan (Pat GhcPs) -> Set Literal traverseLPat (L sSpan pat) = traversePat sSpan pat -traversePat :: SrcSpan -> Pat GhcPs -> [Literal] +traversePat :: SrcSpan -> Pat GhcPs -> Set Literal traversePat sSpan = \case LitPat _ lit -> getLiteralAsList sSpan lit NPat _ (L olSpan overLit) sexpr1 sexpr2 -> getOverLiteralAsList olSpan overLit - <> collectLiterals sexpr1 - <> collectLiterals sexpr2 + <> collectLiterals' sexpr1 + <> collectLiterals' sexpr2 NPlusKPat _ _ (L olSpan loverLit) overLit sexpr1 sexpr2 -> getOverLiteralAsList olSpan loverLit <> getOverLiteralAsList sSpan overLit - <> collectLiterals sexpr1 - <> collectLiterals sexpr2 - ast -> collectLiterals ast + <> collectLiterals' sexpr1 + <> collectLiterals' sexpr2 + ast -> collectLiterals' ast -traverseLExpr :: GenLocated SrcSpan (HsExpr GhcPs) -> [Literal] +traverseLExpr :: GenLocated SrcSpan (HsExpr GhcPs) -> Set Literal traverseLExpr (L sSpan hsExpr) = traverseExpr sSpan hsExpr -traverseExpr :: SrcSpan -> HsExpr GhcPs -> [Literal] +traverseExpr :: SrcSpan -> HsExpr GhcPs -> Set Literal traverseExpr sSpan = \case HsOverLit _ overLit -> getOverLiteralAsList sSpan overLit HsLit _ lit -> getLiteralAsList sSpan lit - expr -> collectLiterals expr + expr -> collectLiterals' expr -getLiteralAsList :: SrcSpan -> HsLit GhcPs -> [Literal] +getLiteralAsList :: SrcSpan -> HsLit GhcPs -> Set Literal getLiteralAsList sSpan lit = case sSpan of RealSrcSpan rss _ -> getLiteralAsList' lit rss - _ -> [] + _ -> S.empty -getLiteralAsList' :: HsLit GhcPs -> RealSrcSpan -> [Literal] -getLiteralAsList' lit = maybeToList . flip getLiteral lit +getLiteralAsList' :: HsLit GhcPs -> RealSrcSpan -> Set Literal +getLiteralAsList' lit = maybe S.empty S.singleton . flip getLiteral lit -- Translate from Hs Type to our Literal type getLiteral :: RealSrcSpan -> HsLit GhcPs -> Maybe Literal @@ -87,13 +92,13 @@ getLiteral sSpan = \case HsRat _ val _ -> fromFractionalLit sSpan val _ -> Nothing -getOverLiteralAsList :: SrcSpan -> HsOverLit GhcPs -> [Literal] +getOverLiteralAsList :: SrcSpan -> HsOverLit GhcPs -> Set Literal getOverLiteralAsList sSpan lit = case sSpan of RealSrcSpan rss _ -> getOverLiteralAsList' lit rss - _ -> [] + _ -> S.empty -getOverLiteralAsList' :: HsOverLit GhcPs -> RealSrcSpan -> [Literal] -getOverLiteralAsList' lit = maybeToList . flip getOverLiteral lit +getOverLiteralAsList' :: HsOverLit GhcPs -> RealSrcSpan -> Set Literal +getOverLiteralAsList' lit sSpan = maybe S.empty S.singleton (getOverLiteral sSpan lit) getOverLiteral :: RealSrcSpan -> HsOverLit GhcPs -> Maybe Literal getOverLiteral sSpan OverLit{..} = case ol_val of diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index 3053a2845a..4113cc2103 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -3,14 +3,16 @@ {-# LANGUAGE ViewPatterns #-} module Main ( main ) where -import Control.Concurrent (threadDelay) +import Data.Either (rights) import Data.List (find) import Data.Text (Text) import qualified Data.Text as T import Debug.Trace import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat import qualified Ide.Plugin.Conversion as Conversion -import Properties.Conversion +import Language.LSP.Types (toEither) +import Language.LSP.Types.Lens (kind) +import Properties.Conversion (conversions) import System.FilePath (()) import Test.Hls import Text.Regex.TDFA ((=~)) @@ -21,32 +23,87 @@ main = defaultTestRunner test alternateNumberFormatPlugin :: PluginDescriptor IdeState alternateNumberFormatPlugin = AlternateNumberFormat.descriptor "alternateNumberFormat" + +-- NOTE: For whatever reason, this plugin does not play nice with creating Code Actions on time. +-- As a result tests will mostly pass if `import Prelude` is added at the top. We (mostly fendor) surmise this has something +-- to do with how test :: TestTree test = testGroup "alternateNumberFormat" [ - -- codeActionHex "TIntDtoH" 4 13 - conversions ] + codeActionHex "TIntDtoH" 3 13 + , codeActionOctal "TIntDtoO" 3 13 + , codeActionBinary "TIntDtoB" 4 13 + , codeActionNumDecimal "TIntDtoND" 5 13 + , codeActionFracExp "TFracDtoE" 3 13 + , codeActionFloatHex "TFracDtoHF" 4 13 + , codeActionDecimal "TIntHtoD" 3 13 + , codeActionDecimal "TFracHFtoD" 4 13 + , codeActionProperties "TFindLiteralIntPattern" [(3, 25), (4,25)] $ \actions -> do + liftIO $ length actions @?= 4 + , codeActionProperties "TFindLiteralIntCase" [(3, 29)] $ \actions -> do + liftIO $ length actions @?= 2 + , codeActionProperties "TFindLiteralIntCase2" [(4, 21)] $ \actions -> do + liftIO $ length actions @?= 2 + , codeActionProperties "TFindLiteralDoReturn" [(5, 10)] $ \actions -> do + liftIO $ length actions @?= 2 + , codeActionProperties "TFindLiteralDoLet" [(5, 13), (6, 13)] $ \actions -> do + liftIO $ length actions @?= 4 + , codeActionProperties "TFindLiteralList" [(3, 28)] $ \actions -> do + liftIO $ length actions @?= 2 + , conversions + ] + +codeActionProperties :: TestName -> [(Int, Int)] -> ([CodeAction] -> Session ()) -> TestTree +codeActionProperties fp locs assertions = testCase fp $ do + runSessionWithServer alternateNumberFormatPlugin testDataDir $ do + openDoc (fp <> ".hs") "haskell" >>= codeActionsFromLocs >>= findAlternateNumberActions >>= assertions + where + -- similar to codeActionTest + codeActionsFromLocs doc = concat <$> mapM (getCodeActions doc . uncurry pointRange) locs + +findAlternateNumberActions :: [Command |? CodeAction] -> Session [CodeAction] +findAlternateNumberActions = pure . filter isAlternateNumberCodeAction . rights . map toEither + where + isAlternateNumberCodeAction CodeAction{_kind} = case _kind of + Nothing -> False + Just kind -> case kind of + CodeActionUnknown txt -> txt == "alternate.style" + _ -> False + +-- most helpers derived from explicit-imports-plugin Main Test file testDataDir :: FilePath testDataDir = "test" "testdata" --- most helpers derived from explicit-imports-plugin Main Test file - goldenAlternateFormat :: FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree goldenAlternateFormat fp = goldenWithHaskellDoc alternateNumberFormatPlugin (fp <> " (golden)") testDataDir fp "expected" "hs" codeActionTest :: (Maybe Text -> Bool) -> FilePath -> Int -> Int -> TestTree codeActionTest filter' fp line col = goldenAlternateFormat fp $ \doc -> do - -- _ <- waitForDiagnostics actions <- getCodeActions doc (pointRange line col) - traceM $ "Code actions: " ++ show actions -- can't generate code actions? case find (filter' . codeActionTitle) actions of Just (InR x) -> executeCodeAction x _ -> liftIO $ assertFailure "Unable to find CodeAction" + +codeActionDecimal :: FilePath -> Int -> Int -> TestTree +codeActionDecimal = codeActionTest isDecimalCodeAction + codeActionHex :: FilePath -> Int -> Int -> TestTree codeActionHex = codeActionTest isHexCodeAction +codeActionOctal :: FilePath -> Int -> Int -> TestTree +codeActionOctal = codeActionTest isOctalCodeAction + +codeActionBinary :: FilePath -> Int -> Int -> TestTree +codeActionBinary = codeActionTest isBinaryCodeAction + +codeActionNumDecimal :: FilePath -> Int -> Int -> TestTree +codeActionNumDecimal = codeActionTest isNumDecimalCodeAction + +codeActionFracExp :: FilePath -> Int -> Int -> TestTree +codeActionFracExp = codeActionTest isNumDecimalCodeAction + codeActionFloatHex :: FilePath -> Int -> Int -> TestTree codeActionFloatHex = codeActionTest isHexFloatCodeAction @@ -86,6 +143,8 @@ isBinaryCodeAction = isCodeAction binaryRegex isOctalCodeAction :: Maybe Text -> Bool isOctalCodeAction = isCodeAction octalRegex +-- This can match EITHER an integer as NumDecimal extension or a Fractional +-- as in 1.23e-3 (so anything with an exponent really) isNumDecimalCodeAction :: Maybe Text -> Bool isNumDecimalCodeAction = isCodeAction numDecimalRegex diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoLet.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoLet.hs new file mode 100644 index 0000000000..bb2b4a2960 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoLet.hs @@ -0,0 +1,7 @@ +module TFindLiteralDoLet where + +doLet :: IO () +doLet = do + let x = 199 + y = 144 + pure () diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoReturn.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoReturn.hs new file mode 100644 index 0000000000..81e2d4f74f --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralDoReturn.hs @@ -0,0 +1,5 @@ +module TFindLiteralDoReturn where + +doReturn :: IO Integer +doReturn = do + pure 54 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase.hs new file mode 100644 index 0000000000..bc5e834597 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase.hs @@ -0,0 +1,4 @@ +module TFindLiteralIntCase where + +caseExpression x = case x + 34 of + _ -> "testing if we find a literal in the case statement" diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase2.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase2.hs new file mode 100644 index 0000000000..29af4c1cd9 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntCase2.hs @@ -0,0 +1,5 @@ +module TFindLiteralIntCase where + +caseExpression x = case x of + 57 -> "testing to find literals in matching cases" + _ -> "" diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntPattern.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntPattern.hs new file mode 100644 index 0000000000..cc01a972ee --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralIntPattern.hs @@ -0,0 +1,5 @@ +module TFindLiteralIntPattern where + +patternMatchingFunction 1 = "one" +patternMatchingFunction 2 = "two" +patternMatchingFunction _ = "the rest of the numbers" diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralList.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralList.hs new file mode 100644 index 0000000000..e28b5bd0ce --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFindLiteralList.hs @@ -0,0 +1,3 @@ +module TFindLiteralList where + +listTest = [reverse $ show 57] diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.expected.hs new file mode 100644 index 0000000000..b0b934cc0e --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.expected.hs @@ -0,0 +1,3 @@ +module TFracDtoE where + +convertMe = 1.2345e2 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.hs new file mode 100644 index 0000000000..ed82675f31 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoE.hs @@ -0,0 +1,3 @@ +module TFracDtoE where + +convertMe = 123.45 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.expected.hs new file mode 100644 index 0000000000..3a5ce2845d --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.expected.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE HexFloatLiterals #-} +module TFracDtoHF where + +convertMe = 0x1.edccccccccccdp6 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.hs new file mode 100644 index 0000000000..07def4e222 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracDtoHF.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE HexFloatLiterals #-} +module TFracDtoHF where + +convertMe = 123.45 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.expected.hs new file mode 100644 index 0000000000..07def4e222 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.expected.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE HexFloatLiterals #-} +module TFracDtoHF where + +convertMe = 123.45 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.hs new file mode 100644 index 0000000000..3a5ce2845d --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TFracHFtoD.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE HexFloatLiterals #-} +module TFracDtoHF where + +convertMe = 0x1.edccccccccccdp6 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.expected.hs new file mode 100644 index 0000000000..6f44263012 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.expected.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE BinaryLiterals #-} +module TIntDtoB where + +convertMe = 0b1100 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.hs new file mode 100644 index 0000000000..501465c049 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoB.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE BinaryLiterals #-} +module TIntDtoB where + +convertMe = 12 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs index 835dc00893..b974c16d98 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.expected.hs @@ -1,5 +1,3 @@ module TIntDtoH where -import Prelude - convertMe = 0xC diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs index f1dda3592a..07fef56ab7 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoH.hs @@ -1,5 +1,3 @@ module TIntDtoH where -import Prelude - convertMe = 12 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.expected.hs new file mode 100644 index 0000000000..b9624b6418 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.expected.hs @@ -0,0 +1,5 @@ +{-# LANGUAGE NumDecimals #-} +module TIntDtoND where + +convertMe :: Integer +convertMe = 125.345e3 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.hs new file mode 100644 index 0000000000..f0980354f7 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoND.hs @@ -0,0 +1,5 @@ +{-# LANGUAGE NumDecimals #-} +module TIntDtoND where + +convertMe :: Integer +convertMe = 125345 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.expected.hs new file mode 100644 index 0000000000..7089e85ef7 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.expected.hs @@ -0,0 +1,3 @@ +module TIntDtoO where + +convertMe = 0o14 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.hs new file mode 100644 index 0000000000..d3db0c599b --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntDtoO.hs @@ -0,0 +1,3 @@ +module TIntDtoO where + +convertMe = 12 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.expected.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.expected.hs new file mode 100644 index 0000000000..07fef56ab7 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.expected.hs @@ -0,0 +1,3 @@ +module TIntDtoH where + +convertMe = 12 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.hs new file mode 100644 index 0000000000..b974c16d98 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TIntHtoD.hs @@ -0,0 +1,3 @@ +module TIntDtoH where + +convertMe = 0xC diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml index 5ff2e544af..59baea8383 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml @@ -4,4 +4,17 @@ cradle: - -i - -i. - TIntDtoH + - TIntDtoB + - TIntDtoO + - TIntDtoND + - TFracDtoE + - TFracDtoHF + - TIntHtoD + - TFracHFtoD + - TFindLiteralIntPattern + - TFindLiteralIntCase + - TFindLiteralIntCase2 + - TFindLiteralDoReturn + - TFindLiteralDoLet + - TFindLiteralList - -Wall From 1e98f686381f2daa881ebb5e4da590ee43bc4c07 Mon Sep 17 00:00:00 2001 From: Nick Suchecki <40047416+drsooch@users.noreply.github.com> Date: Sun, 21 Nov 2021 18:32:18 -0500 Subject: [PATCH 22/32] Delete Test.hs Inadvertently commit this file. --- .../src/Ide/Plugin/Test.hs | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs deleted file mode 100644 index 02637a7dd2..0000000000 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Test.hs +++ /dev/null @@ -1,18 +0,0 @@ -{-# LANGUAGE BinaryLiterals #-} -{-# LANGUAGE HexFloatLiterals #-} -{-# LANGUAGE MagicHash #-} -{-# LANGUAGE NegativeLiterals #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE NumericUnderscores #-} -module Ide.Plugin.Test where -import GHC.Base (Int#, (+#)) -import GHC.Exts (Char#) - -test 0x3E8 = 0o1 :: Integer -test x = 345 - - - -test2 :: Double -> Double -test2 0.5 = 0.75 -test2 _ = 0x1.eb851eb851eb8p-4 From 7aedbc91d3b1aa33e36a56a3dd72ffe9a42ca40e Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 21 Nov 2021 23:26:05 -0500 Subject: [PATCH 23/32] Add README and bump version to 1.0.0.0. --- .../README.md | 40 +++++++++++++++++++ .../hls-alternate-number-format-plugin.cabal | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 plugins/hls-alternate-number-format-plugin/README.md diff --git a/plugins/hls-alternate-number-format-plugin/README.md b/plugins/hls-alternate-number-format-plugin/README.md new file mode 100644 index 0000000000..d72134311c --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/README.md @@ -0,0 +1,40 @@ +# Alternate Number Format Plugin + +The alternate number format plugin provides alternative formatting for Numeric Literals in source code. +These can be any numeric literal such as `123`, `0x45` or any of the other numeric formats. +The plugin is context aware and will provide suggestions based on currently active GHC extensions. + +## Setup + +The plugin requires no extra setup to work. Simply place your cursor on top of a literal and invoke the `codeAction` command for your editor. + +## Demo + +![Alternate format suggestions](HLSInt.gif) + +### Currently Supported GHC Extensions: +- `BinaryLiterals` +- `HexFloatLiterals` +- `NumDecimalLiterals` + +## Design + +The plugin is relatively simple, it traverses a files source contents using the GHC API. As it encounters Literals (of the type `HsExpr` with the constructor of either `HsLit` or `HsOverLit`), it will construct an internal `Literal` datatype that has additional information for use to generate suggestions. +Currently, the traversal is done in the file, `Literal.hs`, using the package [SYB](https://hackage.haskell.org/package/syb) for most of the heavy lifting. + +The plugin extends on top of SYB as the traversal done by basic combinators is not perfect. For whatever reason, when starting at the root `ParsedModule` the SYB traversal ignores Pattern Binds (`LPat GhcPs`). As a result, a combinator was created to match on TWO separate underlying types to dispatch on. + +To generate suggestions, the plugin leverages the `Numeric` package which provides a multitude of conversion functions to and from strings/numerics. The only slight change is the addition of extra work when using `NumDecimals` extension. The plugin will attempt to generate 3 choices for the user (this choice is not given for `Fractional` numerics). + +### Known Quirks +- Currently (and probably inefficiently), a Set is used as general accumulator for all Literals being captured. This is because again, through the intricacies of using SYB, we somehow will traverse Source Text multiple times and collect duplicate literals. + +- In the Test Suite, we are required to be explicit in where our `codeActions` will occur. Otherwise, a simple call to `getAllCodeActions` will not work, for whatever reason, there is not enough time to generate the code actions. + +- `PrimLiterals` are currently ignored. GHC API does not attach Source Text to Primitive Literal Nodes. As such these are ignored in the plugin. + +- Similarly, anything that produces a bad Source Span (i.e. can't be easily replaced by an edit) is ignored as well. + +## Changelog +### 1.0.0.0 +- First Release diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 4803a680ae..4b3d613184 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -1,6 +1,6 @@ cabal-version: 2.4 name: hls-alternate-number-format-plugin -version: 0.1.0.0 +version: 1.0.0.0 synopsis: Provide Alternate Number Formats plugin for Haskell Language Server description: Please see the README on GitHub at From 35da971ee35092e3a32e9da06206e4817563483f Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 21 Nov 2021 23:50:38 -0500 Subject: [PATCH 24/32] Update HLS cabal file for version change. --- haskell-language-server.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haskell-language-server.cabal b/haskell-language-server.cabal index 47c3292b25..3d8bdca6e8 100644 --- a/haskell-language-server.cabal +++ b/haskell-language-server.cabal @@ -260,7 +260,7 @@ common splice common alternateNumberFormat if flag(alternateNumberFormat) - build-depends: hls-alternate-number-format-plugin ^>=0.1.0.0 + build-depends: hls-alternate-number-format-plugin ^>=1.0.0.0 cpp-options: -DalternateNumberFormat -- formatters From 03efa218aec15008110c0fd416b44e110d846329 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 21 Nov 2021 23:50:59 -0500 Subject: [PATCH 25/32] Additional Tests. --- .../test/Main.hs | 28 ++++++++++++++++++- .../test/testdata/TExpectBinaryFormat.hs | 4 +++ .../test/testdata/TExpectHexFloatFormat.hs | 4 +++ .../test/testdata/TExpectNoBinaryFormat.hs | 3 ++ .../test/testdata/TExpectNoHexFloatFormat.hs | 3 ++ .../testdata/TExpectNoNumDecimalFormat.hs | 3 ++ .../test/testdata/TExpectNumDecimalFormat.hs | 4 +++ .../test/testdata/hie.yaml | 4 +++ 8 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectBinaryFormat.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectHexFloatFormat.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoBinaryFormat.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoHexFloatFormat.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoNumDecimalFormat.hs create mode 100644 plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNumDecimalFormat.hs diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index 4113cc2103..0fa69e614b 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -49,6 +49,24 @@ test = testGroup "alternateNumberFormat" [ liftIO $ length actions @?= 4 , codeActionProperties "TFindLiteralList" [(3, 28)] $ \actions -> do liftIO $ length actions @?= 2 + , codeActionProperties "TExpectNoBinaryFormat" [(3, 12)] $ \actions -> do + liftIO $ length actions @?= 2 + liftIO $ actions `doesNotContain` binaryRegex @? "Contains binary codeAction" + , codeActionProperties "TExpectBinaryFormat" [(4, 10)] $ \actions -> do + liftIO $ length actions @?= 3 + liftIO $ actions `contains` binaryRegex @? "Does not contain binary codeAction" + , codeActionProperties "TExpectNoHexFloatFormat" [(3, 14)] $ \actions -> do + liftIO $ length actions @?= 1 + liftIO $ actions `doesNotContain` hexFloatRegex @? "Contains hex float codeAction" + , codeActionProperties "TExpectHexFloatFormat" [(4, 12)] $ \actions -> do + liftIO $ length actions @?= 2 + liftIO $ actions `contains` hexFloatRegex @? "Does not contain hex float codeAction" + , codeActionProperties "TExpectNoNumDecimalFormat" [(3, 16)] $ \actions -> do + liftIO $ length actions @?= 2 + liftIO $ actions `doesNotContain` numDecimalRegex @? "Contains numDecimal codeAction" + , codeActionProperties "TExpectNumDecimalFormat" [(4, 14)] $ \actions -> do + liftIO $ length actions @?= 5 + liftIO $ actions `contains` numDecimalRegex @? "Contains numDecimal codeAction" , conversions ] @@ -85,7 +103,6 @@ codeActionTest filter' fp line col = goldenAlternateFormat fp $ \doc -> do Just (InR x) -> executeCodeAction x _ -> liftIO $ assertFailure "Unable to find CodeAction" - codeActionDecimal :: FilePath -> Int -> Int -> TestTree codeActionDecimal = codeActionTest isDecimalCodeAction @@ -111,12 +128,21 @@ codeActionTitle :: (Command |? CodeAction) -> Maybe Text codeActionTitle (InR CodeAction {_title}) = Just _title codeActionTitle _ = Nothing +codeActionTitle' :: CodeAction -> Text +codeActionTitle' CodeAction{_title} = _title + pointRange :: Int -> Int -> Range pointRange (subtract 1 -> line) (subtract 1 -> col) = Range (Position line col) (Position line $ col + 1) +contains :: [CodeAction] -> Text -> Bool +acts `contains` regex = any (\action -> codeActionTitle' action =~ regex) acts + +doesNotContain :: [CodeAction] -> Text -> Bool +acts `doesNotContain` regex = not $ acts `contains` regex + convertPrefix, intoInfix, hexRegex, hexFloatRegex, binaryRegex, octalRegex, numDecimalRegex, decimalRegex :: Text convertPrefix = "Convert (" <> T.intercalate "|" [Conversion.hexRegex, Conversion.hexFloatRegex, Conversion.binaryRegex, Conversion.octalRegex, Conversion.numDecimalRegex, Conversion.decimalRegex] <> ")" intoInfix = " into " diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectBinaryFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectBinaryFormat.hs new file mode 100644 index 0000000000..8e8578088f --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectBinaryFormat.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE BinaryLiterals #-} +module TExpectBinaryFormat where + +binary = 459 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectHexFloatFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectHexFloatFormat.hs new file mode 100644 index 0000000000..ea008c51e9 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectHexFloatFormat.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE HexFloatLiterals #-} +module TExpectHexFloatFormat where + +hexFloat = 459.123 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoBinaryFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoBinaryFormat.hs new file mode 100644 index 0000000000..a590fd35a8 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoBinaryFormat.hs @@ -0,0 +1,3 @@ +module TExpectNoBinaryFormat where + +noBinary = 459 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoHexFloatFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoHexFloatFormat.hs new file mode 100644 index 0000000000..2e3487b513 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoHexFloatFormat.hs @@ -0,0 +1,3 @@ +module TExpectNoHexFloatFormat where + +noHexFloat = 459.123 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoNumDecimalFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoNumDecimalFormat.hs new file mode 100644 index 0000000000..b4d0d3580f --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNoNumDecimalFormat.hs @@ -0,0 +1,3 @@ +module TExpectNoNumDecimalFormat where + +noNumDecimal = 499999 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNumDecimalFormat.hs b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNumDecimalFormat.hs new file mode 100644 index 0000000000..e5cbb72ec9 --- /dev/null +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/TExpectNumDecimalFormat.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE NumDecimals #-} +module TExpectNumDecimalFormat where + +numDecimal = 499999 diff --git a/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml index 59baea8383..a8ba03e1b0 100644 --- a/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml +++ b/plugins/hls-alternate-number-format-plugin/test/testdata/hie.yaml @@ -17,4 +17,8 @@ cradle: - TFindLiteralDoReturn - TFindLiteralDoLet - TFindLiteralList + - TExpectNoBinaryFormat + - TExpectBinaryFormat + - TExpectNoHexFloatFormat + - TExpectHexFloatFormat - -Wall From ffa92593a441d1fa905ebdb04fd06e017e453779 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Wed, 24 Nov 2021 22:38:01 -0500 Subject: [PATCH 26/32] Update Test file to use Path library function. --- plugins/hls-alternate-number-format-plugin/test/Main.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index 0fa69e614b..18ac2f0574 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -13,7 +13,7 @@ import qualified Ide.Plugin.Conversion as Conversion import Language.LSP.Types (toEither) import Language.LSP.Types.Lens (kind) import Properties.Conversion (conversions) -import System.FilePath (()) +import System.FilePath ((<.>), ()) import Test.Hls import Text.Regex.TDFA ((=~)) @@ -73,7 +73,7 @@ test = testGroup "alternateNumberFormat" [ codeActionProperties :: TestName -> [(Int, Int)] -> ([CodeAction] -> Session ()) -> TestTree codeActionProperties fp locs assertions = testCase fp $ do runSessionWithServer alternateNumberFormatPlugin testDataDir $ do - openDoc (fp <> ".hs") "haskell" >>= codeActionsFromLocs >>= findAlternateNumberActions >>= assertions + openDoc (fp <.> ".hs") "haskell" >>= codeActionsFromLocs >>= findAlternateNumberActions >>= assertions where -- similar to codeActionTest codeActionsFromLocs doc = concat <$> mapM (getCodeActions doc . uncurry pointRange) locs From a8fd6722f791813b7946d0c9699fc9d0ce76c695 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sat, 27 Nov 2021 15:46:05 -0500 Subject: [PATCH 27/32] Miscellaneous Code Fixes. - Remove unneeded imports/functions. - Export only specified functions from each module (and add Haddock Comment if necessary) - Minor text changes for accuracy --- .../src/Ide/Plugin/AlternateNumberFormat.hs | 77 ++++++++----------- .../src/Ide/Plugin/Conversion.hs | 9 --- .../src/Ide/Plugin/Literals.hs | 16 ++-- .../test/Main.hs | 2 +- 4 files changed, 46 insertions(+), 58 deletions(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs index 257e284ff4..ee2c203b70 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/AlternateNumberFormat.hs @@ -1,41 +1,33 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Ide.Plugin.AlternateNumberFormat where - -import Control.Lens ((^.)) -import Control.Monad.Except (ExceptT, MonadIO, liftIO) -import qualified Data.HashMap.Strict as HashMap -import Data.Maybe (fromMaybe, isJust) -import Data.Text (Text) -import qualified Data.Text as T -import Debug.Trace (traceM) -import Development.IDE (GetParsedModule (GetParsedModule), - IdeState, RuleResult, - Rules, define, ideLogger, - realSrcSpanToRange, - runAction, use, - useWithStale) -import Development.IDE.Core.PositionMapping (PositionMapping) -import Development.IDE.GHC.Compat hiding (getSrcSpan) -import Development.IDE.GHC.Compat.Util (toList) -import Development.IDE.Graph.Classes (Hashable, NFData) -import Development.IDE.Types.Logger as Logger -import GHC.Generics (Generic) -import Ide.Plugin.Conversion (FormatType, - alternateFormat, - toFormatTypes) -import Ide.Plugin.Literals (Literal (..), - collectLiterals, - getSrcSpan, getSrcText) -import Ide.Plugin.Retrie (handleMaybe, - handleMaybeM, response) +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeOperators #-} +module Ide.Plugin.AlternateNumberFormat (descriptor) where + +import Control.Lens ((^.)) +import Control.Monad.Except (ExceptT, MonadIO, liftIO) +import qualified Data.HashMap.Strict as HashMap +import Data.Text (Text) +import qualified Data.Text as T +import Development.IDE (GetParsedModule (GetParsedModule), + IdeState, RuleResult, Rules, + define, ideLogger, + realSrcSpanToRange, runAction, + use) +import Development.IDE.GHC.Compat hiding (getSrcSpan) +import Development.IDE.GHC.Compat.Util (toList) +import Development.IDE.Graph.Classes (Hashable, NFData) +import Development.IDE.Types.Logger as Logger +import GHC.Generics (Generic) +import Ide.Plugin.Conversion (FormatType, alternateFormat, + toFormatTypes) +import Ide.Plugin.Literals (Literal (..), collectLiterals, + getSrcSpan, getSrcText) +import Ide.Plugin.Retrie (handleMaybe, handleMaybeM, + response) import Ide.Types import Language.LSP.Types -import Language.LSP.Types.Lens (uri) +import Language.LSP.Types.Lens (uri) descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId) @@ -51,8 +43,8 @@ instance NFData CollectLiterals type instance RuleResult CollectLiterals = CollectLiteralsResult -data CollectLiteralsResult = CLR { - literals :: [Literal] +data CollectLiteralsResult = CLR + { literals :: [Literal] , formatTypes :: [FormatType] } deriving (Generic) @@ -94,10 +86,9 @@ codeActionHandler state _ (CodeActionParams _ _ docId currRange _) = response $ mkCodeAction :: NormalizedFilePath -> Literal -> Text -> Command |? CodeAction mkCodeAction nfp lit alt = InR CodeAction { _title = "Convert " <> getSrcText lit <> " into " <> alt - -- what should this actually be? - , _kind = Just $ CodeActionUnknown "alternate.style" + , _kind = Just $ CodeActionUnknown "quickfix.literals.style" , _diagnostics = Nothing - , _isPreferred = Just True + , _isPreferred = Nothing , _disabled = Nothing , _edit = Just $ mkWorkspaceEdit nfp lit alt , _command = Nothing @@ -123,12 +114,12 @@ getNormalizedFilePath docId = handleMaybe "Error: converting to NormalizedFilePa $ toNormalizedUri (docId ^. uri) requestLiterals :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m CollectLiteralsResult -requestLiterals state = handleMaybeM "Error: Could not get ParsedModule" +requestLiterals state = handleMaybeM "Error: Could not Collect Literals" . liftIO . runAction "AlternateNumberFormat.CollectLiterals" state . use CollectLiterals logIO :: (MonadIO m, Show a) => IdeState -> a -> m () -logIO state = liftIO . Logger.logInfo (ideLogger state) . T.pack . show +logIO state = liftIO . Logger.logDebug (ideLogger state) . T.pack . show diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index 92d63ab7e2..d0b684d3fc 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -143,21 +143,12 @@ toFormatTypes = (<>) baseFormatTypes . mapMaybe (`lookup` numericPairs) numericPairs :: [(Extension, FormatType)] numericPairs = [(NumericUnderscores, NoFormat), (NegativeLiterals, NoFormat)] <> intPairs <> fracPairs -numericFormats :: [FormatType] -numericFormats = map snd numericPairs - intPairs :: [(Extension, FormatType)] intPairs = [(BinaryLiterals, IntFormat BinaryFormat), (NumDecimals, IntFormat NumDecimalFormat)] -intFormats :: [FormatType] -intFormats = map snd intPairs - fracPairs :: [(Extension, FormatType)] fracPairs = [(HexFloatLiterals, FracFormat HexFloatFormat)] -fracFormats :: [FormatType] -fracFormats = map snd fracPairs - -- Generate up to 3 possible choices where: -- dropWhile (\d -> val `div` d) > 1000) implies we want at MOST 3 digits to left of decimal -- takeWhile (val >) implies we want to stop once we start to get numbers like: 0.1e[N] diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs index 0aa5503f5c..cf462c08c3 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Literals.hs @@ -2,13 +2,18 @@ {-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE RankNTypes #-} -module Ide.Plugin.Literals where -import Data.Maybe (fromMaybe, maybeToList) +module Ide.Plugin.Literals ( + collectLiterals + , Literal(..) + , getSrcText + , getSrcSpan +) where + import Data.Set (Set) import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T -import Development.IDE.GHC.Compat +import Development.IDE.GHC.Compat hiding (getSrcSpan) import Development.IDE.GHC.Util (unsafePrintSDoc) import Development.IDE.Graph.Classes (NFData (rnf)) import qualified GHC.Generics as GHC @@ -18,6 +23,7 @@ import Generics.SYB (Data, Typeable, cast, -- data type to capture what type of literal we are dealing with -- provides location and possibly source text (for OverLits) as well as it's value -- we currently don't have any use for PrimLiterals. They never have source text so we always drop them +-- | Captures a Numeric Literals Location, Source Text, and Value. data Literal = IntLiteral RealSrcSpan Text Integer | FracLiteral RealSrcSpan Text Rational deriving (GHC.Generic, Show, Ord, Eq) @@ -27,11 +33,13 @@ instance NFData RealSrcSpan where instance NFData Literal +-- | Return a Literal's Source representation getSrcText :: Literal -> Text getSrcText = \case IntLiteral _ txt _ -> txt FracLiteral _ txt _ -> txt +-- | Return a Literal's Real Source location getSrcSpan :: Literal -> RealSrcSpan getSrcSpan = \case IntLiteral ss _ _ -> ss @@ -87,8 +95,6 @@ getLiteralAsList' lit = maybe S.empty S.singleton . flip getLiteral lit getLiteral :: RealSrcSpan -> HsLit GhcPs -> Maybe Literal getLiteral sSpan = \case HsInt _ val -> fromIntegralLit sSpan val --- Ignore this case for now --- HsInteger _ val _ -> Just $ IntLiteral sSpan Nothing val HsRat _ val _ -> fromFractionalLit sSpan val _ -> Nothing diff --git a/plugins/hls-alternate-number-format-plugin/test/Main.hs b/plugins/hls-alternate-number-format-plugin/test/Main.hs index 18ac2f0574..ad19324bcb 100644 --- a/plugins/hls-alternate-number-format-plugin/test/Main.hs +++ b/plugins/hls-alternate-number-format-plugin/test/Main.hs @@ -84,7 +84,7 @@ findAlternateNumberActions = pure . filter isAlternateNumberCodeAction . rights isAlternateNumberCodeAction CodeAction{_kind} = case _kind of Nothing -> False Just kind -> case kind of - CodeActionUnknown txt -> txt == "alternate.style" + CodeActionUnknown txt -> txt == "quickfix.literals.style" _ -> False -- most helpers derived from explicit-imports-plugin Main Test file From 646bddcbe158af49a958c47b562fe421c4fbda0a Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Sun, 28 Nov 2021 23:11:16 -0500 Subject: [PATCH 28/32] Add README to Extra Source Files. --- .../hls-alternate-number-format-plugin.cabal | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 4b3d613184..4398074c9a 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -11,7 +11,9 @@ author: Nick Suchecki maintainer: nicksuchecki@gmail.com category: Development build-type: Simple -extra-source-files: LICENSE +extra-source-files: + LICENSE + README.md library exposed-modules: Ide.Plugin.AlternateNumberFormat, Ide.Plugin.Conversion From b424cfb74bed0d8a644fd923c212dd00fa894d86 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Mon, 29 Nov 2021 20:24:15 -0500 Subject: [PATCH 29/32] Update Extra Source Files to include Test Haskell Source files. --- .../hls-alternate-number-format-plugin.cabal | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal index 4398074c9a..634cb3acae 100644 --- a/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal +++ b/plugins/hls-alternate-number-format-plugin/hls-alternate-number-format-plugin.cabal @@ -14,6 +14,8 @@ build-type: Simple extra-source-files: LICENSE README.md + test/testdata/*.hs + test/testdata/*.yaml library exposed-modules: Ide.Plugin.AlternateNumberFormat, Ide.Plugin.Conversion From b573bffb9103d3b37a882ae68511a59cff477462 Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Mon, 29 Nov 2021 22:14:45 -0500 Subject: [PATCH 30/32] Update Features.md and Minor Bug Fix :) --- docs/features.md | 5 +++++ .../HLSAll.gif | Bin 0 -> 586071 bytes .../HLSInt.gif | Bin 159774 -> 0 bytes .../README.md | 2 +- .../src/Ide/Plugin/Conversion.hs | 6 ++++-- 5 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 plugins/hls-alternate-number-format-plugin/HLSAll.gif delete mode 100644 plugins/hls-alternate-number-format-plugin/HLSInt.gif diff --git a/docs/features.md b/docs/features.md index 1db259894b..37c203360b 100644 --- a/docs/features.md +++ b/docs/features.md @@ -17,6 +17,7 @@ You can watch demos for some of these features [below](#demos). - [Module name suggestions](#module-names) for insertion or correction - [Call hierarchy support](#call-hierarchy) - [Qualify names from an import declaration](#qualify-imported-names) in your code +- [Suggest alternate numeric formats](#alternate-number-formatting) ## Demos @@ -51,3 +52,7 @@ You can watch demos for some of these features [below](#demos). ### Qualify imported names ![Qualify Imported Names Demo](../plugins/hls-qualify-imported-names-plugin/qualify-imported-names-demo.gif) + +### Alternate Number Formatting + +![Alternate Number Format Demo](../plugins/hls-alternate-number-format-plugin/HLSAll.gif) diff --git a/plugins/hls-alternate-number-format-plugin/HLSAll.gif b/plugins/hls-alternate-number-format-plugin/HLSAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..87886977149202cdf4f31beeea173f96101b82f7 GIT binary patch literal 586071 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

N-&byknBK2;uWEn>T_fD2fHfzSNH9oa5!fz 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�B}i|I^dUpsSZeBW3N>YVSqQI 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

Fnq9zP;99qMUN}B~a8}nD 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 z zAHnYH?Pp&;<`$mP^Jx?8cj$1MaBj5DbtkA#UA`G9*e|cylNKDo8Vc#YPHBGv>GbUH zP=xZ2-m7~F-BsJgq$%uccQ3ULd&np<=jZm*?g(TA=f>I z4tno4Rut}5$Y%_OOb*JfR4Af`l$C~#@71e^4QZm9#XGyDoE-|BnqTasbqiS9JPHln zwGgnnkz3_pEL>pzPf_-8!5x#w&%URBeQAkdiKc7$l;xJ+W@*mT7&iT#CpjAH8aC=| zo#A0KTpZYSJb5_u{NUs5?(Ux>_16mmikr7shlj?;THcLavw3`@X)Io8{Fcpla@ct6 z(Ukkp_|V*N<-Lv0oX`SW8%w;+n59>;mcqTHm4ec+F{1Fu9h+P&*5-$Y1-3DxNY;BL zF%x;0Co6wXWdF=liK(QdkL4AO6%;+Ws?^o3)cttxN#E3yLYt|&p0T3yQxi5fvU=@L z{+?`cuT)}vB5yPOJY!Hgqq5?B^X%^m9lhLs}R$P1E9+G z@3naC#^P%4;^4}n#r%}sKhGoI(#3Aj+r#EH*cZb3p1<~*@#&k14ttuyK5J<^X&y5q zWH2Y-O;>4n?o@JL!D?1{X9+Aaq!Y7T`2I!Z^m8qP1r6^f@XX~S{g;j2FX}J6{B83R zro5E?ygP?yE?##?+jh`UdAaA$g8%e$QSbSy!t-k03rXG;X_hM`-mi@M=2HKx>?|+) z9EmI%^v&5#&wX8arLnifGlW45nfu)i_>Q`lePm2hFE{Qaw^f1Zp@ zPp-XxJtq9(onavV{Wc|nS7yob4vX0D~_9tkKXH> zf7XZf*QVKDpuHC-4H&IAUU%PL{*790DOuCF`SQd2^|nmx)ENwo$s@( z{o!5x%yOO2V&|*Xq}N+A;fsYT+n?S)-znL6l=(JEh2ivfx2Sow!SlI+{?=UITcpp^ z8(A;gGxvf&%-t=0d*egBs_jhY&AoV^U3c#--poPKo9~31cM@;D)KuA2y7^&I^zA#9 zwYr&iO?KPvDlc=g68zDYc`6^w{_cpsUPwRrzTnkv*z28wn|n{Qng>+oE3!6k`fOB` zjshRwO{?sFGx)Upeq()Rv*zR`;^GIj@SWeH!&$GlzuWHJ_WB6By_eVj$UvpC+n(NztP4xb-T&O5~3O09ka*}p!F-p*FkT;J3F zbDNj-BL+Tw^nH=;d9H)a<@uIF_-5E_V|MYyw&EoA=eIU^PX6S#>V@AQKuzxxlz)wf4*YCoRX#zOB&AhozKcm5>jT~ zU#fj)Ih4V1JgE25hq4paiiu0OuH$7jWFxK#o6t++nA2Z6oaIA?(4E(gre1*LrEJ@8 z9KO~~TN*a2h`A}@5aa#~k*2XB3=91{OS#>0k{p$>?677{<=0%(?|M)>8poRKQfRKy z;Fc5h&*$DQX1>D!QeHw>khN|yPPvHEDKo=5oX`2ze<5Sdu}>#VH7B=m9_`$iSQntt z^vHZ;LhI;3-0LY`%{OCI#ZS8~?h3n&2D{%yCho2RTM&$XvZ%M-*DVM+{ZHY_Woset z=Uv7dHDnEK^UK@&<&_hYqIzK(ERhj^eoETny3dsD_YO$@xFD>0x=%KY4obatGCGd3 zE4(`ZSN+Oj#&-I^J|HDyTW{L%MtC;ah;5`mmjAf^Gjpv(0B@$*l4Xv zgC5gs>5~leXVJu%NNzR@N9?0c;b+i*^sQn!VbH8yn888>{QyY`ZPDY zsgph1)3b_>YTqARESJ6f04Z7hT=#8BctKs$m{`1U1ns}G)9n>J^M7E5F z#lx5x;w7X=DOMw=*Qb?AAcotUi(Z-;2c<^E8IC7eb+qGTZeUl8CaefK@d`JW`hv=C z{QW6grX3VOt*{-UiX$%dJ`*o*_gK!&kQH0-LwYx}RHm8tiJx6f?;EhlAcQSdi>NJM zpS9-sz%b7#=lbl2RHa8Gq{n^02V>OS+P>Ey5H4Ft@ibwWu=mUaqFDE#UMS<%!L^|y z#QovfYA@jK4EL_Z{Dzgz^;XZDYnug}v!Kk- z!e~T}Bmpn$pgbK~<7ND#eyiBx{R6&11)jUfpQeodZj|_bc(s+8^6T%fGTMU}iHoYA z-$|{t42c#Ihf?vypKnnI%!J$W^3BUG3{v-XmS%x!me7uDqm;tX4uN15{+veb&5r9@ z9`9mUPfhI1z$rflN-C_e|x<~l?6PBv-`I>2(@MZfkTb_m&Noy{Mb|WY0RyCw8n!$!I^K^Xg@`5saqN^j%kMFMiNYIrfvs^jDcYk%lc}LAS{9JMU&s1Q zRJd@jJL5tQR@s%Y5@M75gPh-&#!f9HxSYfes_cN0!T$`UYlFmvk#E`31-P<}2?6^m z_a?slskr#F6GoaeQ3r!81PAIfP@xBK3FVZyNe{bARoZ=9P11@gM_n$1OA_OG&OvhX zG_zy+GU?ZS!}Ag~5OT@nq-%2itlF1M#sfGjjdF}c9QeHiFW-fnAWfZ1NFQM>nZQiR z4RQXa4$G~S!>X`jSeQYbw0NSas0Jc@LAX1IOCRUJxMhu?Pp}=jYT}&7K}+D`eGJm1$FKVSbMYnH^$zoEv~R# zw=BHyLW5ff9zt*r?(XjH5C{&1Ru%5h@hP#6!Jn3o>OzgZbUzSf?Et&18l}d5U^Ndq2mc z!$cr!HJ`bHj^0zm&t<;<_5N24ac$*DHabp?=~TAYHkq}Tq8%%Z@w44_;Twj)A8eW+ zk(JyXQ+DBR%%Rr$`9jc9Gc+n{Ax~mN9A}4f2==WmdIAWsceAZhwiQ5g*nBY8CJI)K z_enfd@^qp4)8Ax-JExzv+psRy`{YFZD?BQRjN#X|OacGqSA4HRbZStj!M95=z7+z1dLUJ}O@J^GmJ6z6qkKi}dKO&9)1L^6(CZf{6HDg<1i@AeJ+Ro^(Wx`&|Ek}o!eUbh>A61_~Mo`@GsM<6iQ6I>q1ortqWf>Zfu~S?UcLbuSsBsNzdC((53&p@mSl}*#dgj? zLUxjMqRlke3vsY81{X5o`XTIqadXN)JrKg{7b(cD2%5NrOfr6Z*sFL5%SV8}bH{dm z6xHLWlu;&`j!wsr>&CNiI&=&zKTGsm!-b1&s_pFCk`nY3cI-StcVsJ>%i!f?c&ttOFzUrknY8|)qhe|W>b%<_4jL62ti6)=Ua#oFnhD=apqF8M?$pID zDj-uDTr*2V17Kk*y&V@GqDDao?iV~UYPj6}UI9%OkUI)4@Xkjnw;$`=MoPRPTaBs# zDPfcW@sRukYrccR;$T{c)+-mJoY#-70ZO8W1HB3O{iZ^{sX~?nIJ^5GY-|)RS1pK1 zlr^N$`qM$lH^KBam9K@djo|w7ukBGml(aG|4nT;09UNU=JZle%oQMe0&$j7WrVe%< zcvEy9xYQyNcm?yMfBC{1$Mr}vG4^7tZJ7dyX@q~x5;W9*lt)5584!6yLhZnz^ft8e zUI>?NHHt6O9!xi z7-B#bya6sR^p5o3Ok$kwH$D`{#(@VBhqE1adoleK|I<&S%ABA0&RZmugBRgr96b3H zyo(nS=Txw=4gIM({>n;D(=1jX0`HFZ4__u;{77!M#}IzOjEi2ekEbO&L=l-!VLUdK zUKxz?B0&;wu%{02R;5x)9sB(gB>JRl7d8Cjqhw?`BI{MKLK1w~FohctBIjjj#$!1( z6+Gkn5b9w#wK#~73H&7*M1jAbvolQ0h0w$E9hYhyh+m)V%Oi*BH)X@U~^h zjL=x6KR;F8_;7)kgLw4!SpqvGbe&@*nQ7FPWn|uQ$o{iIaxM`6I22`6;Q|Tdg~)(Po5uBZfNJl~!Bk}}MRJ?+Pdcz&xLN1HQ?C9_UV1;Q_ z?&_YQg3lSqL1Te&5IGP%EiY;?HPNez4BF?za5i<6-YY^{&^r&_5OlF%DpwR;Fn(km zTv=6wBOo;2OUWPl>-`mb;cB?Q$XK{r-1cwC4jHHqpTofgk&;Alt!Rvo6n;+-#RDK9 z5~_6MPBjfhaRVt^ilBXP?YIRi2Ei0)iQw;6A^n0A)(st@s*!LEfPLP+Lm9C>bFrm% zx~y@cPjGScvOrh6)|B$#3|rpRh9IW2U>E$J_i4e&BGfM+)i7wR2;YRIYGjNruDHCy zGR?Gw-Sn7UoJhKA%2VuTU0AjlT*M(9fq#MmUTKDR0#Lh$5R6_n((t#1s#0(sP;w$_#+^2M0TrO$0;?^)7AOTlSith9elUeR+cnTX3JPi7# z_j?7x=iDf^=D`O)&d!41@9l(0f$(&18_uSg_C`1=wBVnA)E{b-X3}Sz8OiS#)p;<3 zzwx28f@bLJBI)kZ#!(UIhBer|OFn)CV((2+gH*|cxH1jUQH!V0{IN1lqfLdR_GYke zFN0L`lPN$m>}v#+r>$IYbx=52Rms?FebjJZG8q}&mI=OCaTh;nqOBwEvcLxyRooZe zShubTHW+lq6+6Uap0=qs`=r_iNz>d=nDi0N-4Po8b^fJxdR=dR?0J+-NIUb*RMp0f z-42Z#j-}GWmJ-r_m0w~c1;vbAi#)S6TK|S;;8?IP24*f|i@(>6&(;>Hj&jAMi9rJC z!RZD|Y6ae<#O?{DTY`>BqM6u8Qo>rD|DvTtYdeJXp8zAzh8fezn$VHB%*e}@uIJ0n zK1(Gpf3Hd?^WbVTrEp#&DXU(N>S=C#)N?+=tV;fvcsySxxl*dBUw;N`=31Fr)oayk zZ~wbIm892sN4G|#uPsm4GzaW5)NfB-&d<}U@rTZ+rVaKO8WeIu|TPwv~-64{lJX^+`D4z{m`_;5I7bg1y ztdB9byi#rWy83oIBUtU2!DO-4eT|L%_qrsA*A$0Z) z_h!9`-Z<%{tCZxLyURW&*y4woT#@%ZROgH*8#t)05vFXBVexJDZJd*DU=MDQQkZVS zn^K2vy)Q8)$J)fD*j^wv8}HY@%{H<;+PdD`!bpa01rq{>H*FZ3*8ftY32$YQn767M ze+ZC$rFIy?!VxxcOKECY{)=eBD&CUHwMv%siHPJVo8rh$= zROt4ktq85El?(3T6`d<@^ znvDlVD@rVDX4V4_I&1TRJ@r8|>2MQ&Ix{0K>mVts&sMuyR@T1>4n&a0rZD%-a?FCy ztzV-S_m4Kswx4%Z_t$-ztw{b^OBt<0e{3Jz?PPFn)0V8;DB0Q$9w4r7xFYYw{@TyY zwiOKDj|sQs-8aDgao}&YGcsXqRb#=AEFaRmrEzYg7Gv<`8y3co!=v=H_*2V*=DqBD zW2*owo^T^OsiW!`Q=K1s+ySPKNGEm_wn+i|!8vv{$cJo3hk07oO~O`&6c*M>yXEJH z;~ZuZDJupN{xT zrsVXWza96cw(d3OoE+z+&Udt&_Sw#Nzd3CiogaQX-wQuqcXB!!JU?o7I;%N9y+5Bj zciP3exG-|spFiKha$cvqxUssp<94RaQn{0IdXjQ}cDi^my7*&tafR&s!g_I%bFqCt z7a{EUJ4bd~$^}mO66u`_lBWwY8GC`{=>mFi!EwF> zm0sdVyW%Qe5olkbO}gBKpSK}6A$++cw00pKy26}veP?||v2leDam9VTqQ<^{6uzQ< zxT2MI!wPhT`#wcn>T2@A?L(;>g|QpP_iGm8YZ{a*<{?+s7PpV@zJ6M`rW;z%JOE!a ze7WJWzTx(~;ep)nrrz+C-tf2F2n^i_F5IZff92Y^`GRsQ^6plY{#K0VR$SVh_~PqN zrCTY_TWQFxOzN#{sr#YME%EnTg@s$igIlGCTZ!&l&evO2`a3nAJ9WxC6=Qb|>pLya zJ8j4vkG6+q?44fAo&M0Ba_*fW_PN2soiWP2$@i~D^xrlK@6Dy}Eu`KOYC2JL~<`ftMVC#j4J75M)rEUp3lUNn+GAsA)wzlFu=B(NXP_f}!CVRC>E4rt_Z zjb+n?GKp3{z3X?o2q}}~vj1DxioK5Rxi5k)xxd}?nBMeXmYWJ8=qD{^kGV$t2x*h* zwg2c^G1I@A2#L$vJvulMgOL2rPG)cy6P;<=eq;Bso;a(uS;*kc=s9JTu`e!X0aXaVh5rg54VfI5HIj3ucS;kx^2Rwc0g4D06dl1zsmjMiE1eYOW#p7XGS9H0C2gIr%J zi(h#U?&>xI6k@u&1yOzTBFHEbOh<6hT6X2uq!yPyOR|us`-}6!BedZFwels&%IePj<&&Bp$mplF-Gt0lbw4R89qPwvPEPA5xzW!W zXS7Jqntl_$s8p1sEQ{mu``IzIZU>OowCoo6p0}Q4=sUHa{#aq{Jg;EB=(^u0{r=h#FJ?3a@)=cu|r+f$r>cKKY?;exsKyltVQ*oUh?IZ{P<^onx1KGS$=wvmIPFJR709(WQ4@=qh#xuT7bF~^ zVC6Mbr;po_FApr#rj*I59lwvqTq6Bnr%wM|&MIKUo0 z9jQcSPH39k9o7?LLA<*4V>?awA?#DYNun{u!=td!eSECvtvMB3`HwFoZgCJ6TAFv| z!&1xB@xSDE-_z@UdS0rH!Cy5+HZPGS=bjAxENF^i3mheka0}y5_<*L#C#O~5mR### z$zsenrZ;n)!k%Tx>ewc4kTVnJU@mjg&M?#mJ2xp3DETaIBgMv_7-j9SkFUA^k){3= zNJ3^*l}0?_B>XknRz3NV`=~{;_$qShj}^h}h>}aiY{n&-`78d+$Hc$(S>z77pJjDl z6>R455~mU^Xo+P1 z=wMzRU@aPk!Ih2T4gXJuK{QV*Ujy#9s9dir$mKK$6}WXQisq{7lfVw9RV2qyBpz+9 zzpJ*7X4YKeSC^;T%_SfxSHq@30WiD;JVEe0S8~&_KDhb1Rh0bL1+l6&TT~G?@Z$KQ zND!HO5+R{s5IzlZsDl>uA3zVD@X27$88$$?`eX~YUe}xbMm_DW%7j3yKIAnI?#HeA(|QIO%_V2x0&)t#{Rqa&ZKC$DTuE#UM;lMom!vQ&Q}#2cTRIhZCraQ>G7}{ zmi9n>CIozo$b?=MBy=;K^g8s0E$2sk1!i(xXlm~nM~`EEzjI{zlKW1Wzxh)U19Ex9 zmr=9WYsb>2gtf=1X^h|8yBH{@l9q6nu@Q^C;nc#ww>T&1jUHSrDqNm;Ozl$U2O@yz zpbTlINH0ACxRD@#NiFRc7%O@0>3pg&_wlYqj4Bm0zZ!?|lKL7<>{=k65ZR|x z;Zfr<&|o0nX03*%l!iC4U^~4P8B(iDZ6XAG2ddxtXiiLRvFXf}0k%9j?kAPGv?t2* z11ZM!w$lqk*~#+X!phrZMvHx=Gh{WK`n%YF$eV;&T#q%>K@`$PO{v6g8+__YS^PvC z;x%vp_NXN^={$EaT>k|U3d98s?zxO5g)=(f3k`#g?b5Grap(8#4tsLxcJH+pJwK?o zKHcuSCi^N;@jp07?i78-X2;fQRRHqU4(H=thcn8A;&IoC7GmR~Gi&&Q8)1@Si!7$S z@TtWZPY7aY@z|v?E#%s1_cfnpcmYJ3DCq$}?oL;v4&<#7mschB9hGp`$QP=KPhT3O z_yyz1^$D|AShj@U$(f0Ix~!55T}2pTuqU{wuWl5ShQhfx#)5sQa|xILc4&Z*6&>eR z_2H6J^wsDNaT)_6uX#A|iEZG|b^^(2Op0vK8O2*xr`X52|E&66OdwEJvbqTl4E5$M z_}~B#F@Ar|?u9;Y$d>x8Lg(XFa&OiZ%=ypQ-05QqImLS9sC3bosD>Z zo~B9HuOKbVo!&|YVU71&uHhUj+8f;e2(u;#EIq{HYL{%M{?uUg_6EYDL4I*TV_egB zk>WKVPtKqvZ6f$l2GMXB;>nU$-gQL{<^hw8|NB~Frq|JoUvVSdjuT$;)fx0;Uw<|j z|E&)AqBW5lH*ul(?`w$n-woyNpDSM1jC+BECBE>7uFoy*;1q+bca}jYfH*c^d{eAU zDI8@N#GGp*t|m-p7f=`klzM;@+~d$og%lSC$|u0lymY660}H7bHM-$an7Bp!F!GUj_rJZ*_rdG+j`ZYj)%J>i7gibW^P$i) zk0O_^LqJHY#u=ASuZ6nSPoeTXOL`O-dyuE-6r!>Tg#7_W z%+gX6te8n)iK!Zdf90F%1<~^WNnbif0Rfzzh?8lcQ5{cfAVjSgWOfkLcZgH^0s15z zUiwxwfO;9Fd1SX}7?fF^+611b1(>zEUoSFwK7#Jbys_#citFuPLzV4`zGBunhqk(c zT*Gye-D0g_&-W27L;=yf->9e^Z#-d^gRX^T{uPHB3uP*ZjFvZpaiolS-vk z)y?9LBY}m`#FEE^BAZkX+0-QK)Uq_t7h;2UJPs6K;4M+?Rar8$Ey)lDe)z_7=oxs^ z8Uv9s#UljE>ZX?^C&{JyREKM3!@P1BeJ~Hw2~v`+-bEC8wfHfvoscdb4G z-`j@7TIhh?F*QAaXCc0J+HhifPpU##V1Sb!KIk@t?Ou9y69po z8_2?^&k9Sd=1Wvd8IP_73DG_O-Y2uCg_6JdAO?31sBc zC|KkXX7Zk2O4qpcVsA-(NDI*P)<`K$MvW-sD-KLL%7}*L_v@w#MHDG{rPP!sXF*dY zlZ&?zBXoh;vmpW283}<>k@2Xh4tCjJVPW2krM_+2f_%dE>R>MZl3J)oX6 zOfD=gq&?tm9d1|>*79l_p6hKhgB&S|Vo9=`w1=9}FakrlDm1o@s+27vdknkviaANm zI=8MU=Fe1M`jATan z#85u*oJCY4*i;1S`Lw6x-|%PT+1gk@ORBBCPkhSqmR)Q`?>CJ23>D89C*yV%2fTdjXOp9?x9z=dX!So;_~+Zmib&zy8KDN7P2Lit2J4##H zle+Y3koClxD=JHt+lHRX<=@rCiKi1hm#Z9mMOD0nF6(sgIcm_2UsFHfqlDe~+nBxz}C z^96UKCbr5~IH%W@L~=AS#Wu86HR;8#GSw*hG@8hmNiw$+{HYv>=+1vGuH&sjKWL>B zXdz$D;8=0tKB@d=TL2KKSlVe+^%Z38Z0SjfkYwum+fs$Fn*9Wf9g2({WolKGY2Fg( z{Z*Nu&Dfk`Uu{5Yewy)fEaRItNhga}malhZ2T9y$s%#H`eacJrYG$;$UW>41xu37k z4r!a1exnvz0k>A4Oyo~lh1N{wp*Fc8v(=h8jmp`VAgPK>%JH{YcnYUqVk=*bKI))0 z3CGl{K$&l6aRF-SksQ0Jd`TQ1?*nfqid~BKL$ifo*5OL&b6R&^)^JwFp!abCes3)O zXxgxBk3m%o>S`Cucs~bo+n>bL)waR5svo;!u>g_wx&qiY&Cw~jQdcH0kg+CQ?9KD}Np*sq75Kdq`;VwE zpGuoq4+goTns*uMZI~()R@%QaHI?fP=rVtjz8R8)MNqy(bd8OIrrUM-^36zoXrC(I z@fX~Br%%vzf3j@W8f*gCl~c1c)&nQVFpJZ)M=MU+k@Olyo^j9w%c|kyKTHgiF&0F< z(igN#)o_kAFvw2UR{=xVXPSLLIJBG@@9R-p>CJrTK-S=MZ?u<})ZLI8e>iD*HO+i% z)U)#pSU-CsuL7XFbU7>`Er=gt$+i3i*MCp z^6K^2jQ*nKE26C9o@S^nA2Gr(jiZ)Rc6(ZV=Q>dkRj#P}1xc{)F#@EwiFN!+<#q2- zKM#o%w?xoLaX=-ErjkayHbJ!to9dtgCN!1SpaFXGKx}W(3os}G5JdDjN3>%G-P+V_ z&C#H%oY1uX>8~-WE7k;g&S@v8mB^QjcbK%dj;u6}2Q3DC{2gtrxL-aM)QcG6kCT4y zLCA_zfC*2d?j+QU@E z2GnkQJm8!>)$T=TVhdLfcT|sjOu)>?cpGy_xL{6iIv;?|(WlKpz59yL81$_b*KiP# z=XnnoP%|$cCthF71+gy6o9|M$hbzdLCq&mO5Y=^~*dG)ar`B0#f|K7(HjVhNgpd|` zfH%F?a)}6|!;%gMS)SuAX3U!TO%t)C$PMtwfUrk<3_-8dm}eEigwTC}i7ztB@q}Td za0W=(JL8fG~l$DU4&l{j?s^?sDAde*sY0Nf5zd7IO;A>)E59|*bwAq#^nisrDw2_4Mu+*^l9om`NMez-6gUt-oFnQ*yHOFweY zN%7~QZ%iQmA;9`n<4mcF`WeoSX7Yrg0@SjJr8Z@>4#08x;p$4|(3`?U4m%wdEO-QF zzWDW*nr%t5S&TZI1A{PIoSto6f_Ih?Kyh7qmP@DdN z_`#N2BFII_r8CHP=v#i{DgGix0q^yVFsP9M)XI2(;5Vh_rK-x7SU4uRa43-~ji|FW zoe`N@EvBfF7Q2)nyDBt}LP*Le$*Z;qlnl^$_F@b*2@3m+P4e3mR|Gql+f>ZY48e>D zKwR9$5`hbTV-O6vsUMy4e^Kxx3pXNC$@B$ZGYPek5N;18pcu;~sZC`jC)&~}Q4h}^ z_XT3M06!jToDR@2-2Zcw+IRl>H7`f-scdS;WDsqPE(u-T=~n}WcFNpVJ-cj9x+4=J z^A(I>(zgu_RZWFXxf6q$bk`@jR12W_N)kLrS|_U+R) zdy$m)hQ-K4=S|Jyp-K@C@Nc8yVP{=2y{xXlhJqyor)Xb*xSxMyj_Vx_Vv%RqbA9mb z`!t#zpiw)NDu))?52@n+)mHt{PHwXr#y zVB)F;jGcy2J(1&Yh2WJ^u1Uz`t8iKsZXz|Ze=ukJGtlF(>b-Jg6?-w2zrt)K11aZ> zWc*2^k~%5r5v^viAVL32i9?eR?b^z?#537S!-qfY{_eb!&m7m-HM1?%~EM`OHU0m$e(6SVid(B zHE!{Nd!u3aFfKY_k76~2$=gI$l@LlUuU1Kak?BPa;`z5du(c#EBbeY!or9B_UF!$U zWQ3Rcw#km$&JlEsU>lNn>bh&|%7nF#sOmuYC2T%G<`^A$=$o{;Hr+ESQ zbTi}|KWilMkIa23Uj#lnnvEJ>$JUbx&+mdy1Ky_W6JhRMb7*SwbSk8y872UfPuR8- zp{!ab0;U10>=wlE_*-fMlea%)1~OT%RZ0nVZqQK-8MC41^#pLioMaw50Zl~n8~+SG)n|pF1vVsIeWi$`l-L9Bi1$V!eyNK*F)m=l$lO71zLe3te=-4Z&@&h~oUaaqQYw`+g`zX@G@eObEBq%t7I6#P6AOCaAu;Y<=qV=mSay}W6oa#plPHuu1h;!)vjmfDRL+qSLBSALCbsom0d z`HZ5Wqq8uUs{wT}6@|c4)A=pd z()35-f0k-YtJ{%^#{1%fA*)s(8$+X>BGHDsE1Sw<9FtU@U^SNh`D@=QEYVsqoBSO- z5kG$Ze;&>LzZ-}48U>PF{}pckpT^-mqYl7vXEa;BrRMF?tPP%__MOxE|1=KS`hNIf z{!imj<|RDrzZ-`ga`%~SH=4mttGtpSbd5HXOy$AC(a%>ZKaljsVj>1(ic8ICj(oXR znkCAcoF~8i@%f}R^Q{DKu~a!Dd+O^z7Q)_vr#NT)E~ftnX~v_|m5zqjBQ+R9+0;f8 z!X^dI1cU$nE>tQJ*z*N&Oa+rhblOmnpNc*}eUr0UYrKO3sL0f3RIN?ai@M%X+DpZ! zY`R^DsF9GogWrt#uw9pr{8m2`%hxbV(%y85a{QJ>E*_)?{jef}YhqvvxQwJ!@Q8;B zw=cS)12VE~;)qcHqxN!G{T$04j98dQ283s%jW77%_KWYZ5f4gY1BL7145kWx>-JXl z4zh}((L@V}iO|yl1jQJ_$*5VAcVe_`M~YMJXf;>Tpj2i`FemrAv5&#Pf~@yvT*8A`y5upoMfl8}S}L?X%T%HoFwGsfc&RLO9gFzwsR3L^!c z%iha04h0XKdKE6BfGbem|E?jLOS>t~dqFEAg+8Ov4wC<2V;qc)L3||t{``1M?tdfF zXI_%=Z-7yY&nJXYEP4Fv7)9P8M-;!4!$7k&fO z4AY2_>|VhJ949Knsw33A)r<10=L<*INegmg86_`(mV3j^?> zK*~az3-OmINu84pyved5l)9P+>xey;)2WDBnFC_MIw)v8HY7DIP2c6djMx>)rEzyu zRU*PS&jGbDGZ3ez$paQ~Ef{SmwC&kG_@zc_7k|cP^Js=(@}7KCoe&5>08LVbIEm}| zXAH-`|EN259YYEy-&V7|OXbaI>ua`rCC(=&KIYQ`Mtcys+jy1x7Y>f+9K}O3%wx1k znNs~HRvhk0u0-7yxlU4x!y>UcBK3E zb>cI9WAaXkm$M|UgycAG(hn+zN>RRrC2<|X`r6Ygpqqx^Z>M5hzHgZ!@mB^ff*nE$ zU)-rEyU%fDuITuiTI}u6O&J2h6RrrUu`N3#8$A?f_>~Xk+l4YbKSBiX>yQU*gE=eF ze&;;bCY45y;66PL#NpR{`J#jn7mO$Z*vXH&_SzlZ1{ zk1+#EAwM94fBgOEjc^pqSL7ePqac+$cTds%mMxn(g_MwjPDJ2tBK)V7c9; zm?j96;ua^x<;9Z}c-a5tsWyZxs|dRQUsjhv$qm{nSqVk8s$`dm z5k!ZHO*K(7&q{N&SLRKDkH~Jk>~-eaH=@?8Fi|TAYB{%f;8%Kk4sk+s_D~c6USc@D zt-FLC)Ig$%Lddh2IQbjEdypVyOjn$=DZ?k9oNrDVQTAO4uE$V0&s>^w;38BJj}C1R zLC6M(B!vVAg|)#+MTz}neaz4I&KJd;oyy#9Hw8+_n2UCAF|f)0V+=j*0=V-nv!XapJgr~I0OpTMpP)*Q7gN00gL}~v~8T7|dv%b5urLwzB znF>uM6<=VK6ptTbUS(sw=GCJ@K#&*wiIVbyD2}mlUe z|6>P78n3q!M94Zp%5fONu9$R&6kz}WqWFZ%B?Th(JMR%k@Dq*4*|K~UyyJ&(T%C^n zj3=5iDnUmoirTbDvEMnZ1YRqr0V<*~#M7KAvkqc#h%QQ_%$I3*nS+;O??D zwCm|ld|I}Q3ZOj}Q&1bM((8CniX|#aHrHEp-s0aPzdk}ZerLjxf*<9F3@g4uNH-O; zHpH?1xq9!cl;*wS47Z5(s|vo!$X@JPhDj6JINaG*zAfErczq**Qq_#{?OR{Bcj8m< zgdIvf1&-y_8if&OEAvixY* zjYn-qHah_HVlfr$-hgLyW@y`Ce){jeWyt?DSkzzxMftI>LG&P8xpVv7>mKuZ_ElVL zr#0x))2RNxYq=)@ozR{qx<~L00MK{$KM0>RTE5FtE}SOvvlMe*mr<0wC0SKhg&jruv<{ z^FeI&-)RXVWC(Ds3(n>7VS5Z_w+RBUg&d~_Gw1|V^7ww%0n-4%{8av5-hLAsUm>6$ z$6^TAVK8S}=qI93q(?t#AXpqOMAXKgzSWnXA#k@e%-}HW%G3AtAh`9whZg8Buo&=Y z9d4KAf3grx%ZqOf4D8^6xXM5twf(;>2GFGi{w($N2KxIk_-;S~GOR;|#A2Wj#VF zpaE69um%Q5Lm8||Cp?`YvLem@`ytGYA)+1_*{$O{uo#(h=x4?oFb)lQSctkW4QXzH zJq<;~0AW4aVUlUlCA^^$LD7;x!Xkzk3z?YDkAyoi_(#0>MGOJv4}Rr9@YsQ$_!X?h z2HKGp(Fi1@J@jt(gyHG2c820hF*yxs%7x8 zo?v}tu}=?)4>HjJ*`!pPB6nutF#-3P||gCfZ6CmfHgD8xD4cOZoZ~9Y7rK z$>zgi+5v>gd&R7J#YB5WSO8-bh@wh8(_(BBiHTuQnYdS*$aL8h+oNRXy5x+J zi?p=}#xP856Bnrp_Gacq+USWf+in##$LQpk{{oR+r? z&D5~T>mPwqdL^Nb#+|*(=_Ss&AchUvMp(;aaKYjVz5MD>Bd1VfSG=<^eX;^tlQoHx zP8rg~%knv&QjnGcYjneTD*~u9{2lq?T+72z_!21FQnJdEqoC=kWkur4g+%3f>=E&= z(ERGftm{_qmZdm9n~2r6;;yHNZdmL+G&y?_Lcx?|eVk*w57 z$2yuBU|Y(*nEtw$oLn9`mYOC>RKzt}=ui%!vniZKEmD15%;52g<$4MUuP8ljD{|2- zkZVnCEH4wVO%GTu>3NrC`RE&PRET9)Q3uT+UoIIQNi9n)MouddV?)e*S6<&s_8!HSJTFN`#%$mJmstee8pX7wLb@ zn=yr!QL`K<#8+^I1~_>JZ&ajfw3jmZ<^g1@$6xuYy%>`(J>L|&m4$L?O+IOPx(&f3 zrKkySwed1u??#D&hRcIS02}rSph*e6P~#=wt#K-P3GP`6krBy{w#}AhPA1b!wa{-w z7_Cu4PeqEvGG@%wsVG;IMaE$&(Gtke)~`I_!`DZLQdi`wEg@W7EA*D-+q{(eJ;uNt zXLbA38s=d&eS>|K4HK5br^;->^hW$3kH2wTJIh~}S_VYwNc663P*ZC!tIV)pX%ja^ z8hdCD9PtBORwMTNpYk?xRko|4wsTb$9!0ckWMYTqApwXx1a*BrcKA|sbSSGN5bAgK zptq=?H_QV&XNSvzm-5balEgAH!qLGUuX%MW@|Dt;h-H}w%jzNXnJsBg9fy&L@M#Sv zk#9%cA8Ou6;wGIZl??+6Nbc#~YO+Y&E?6d?HJ|01+FdYBRghlBvNCxQb6v3X*^n^* z5b}ZHchCqIsIXel3H58+R5Dq*$J)kLdfMgRHZM)>m8o>hjlKezrpNK|5xs9p|6QLx zwWlAQ`n@zG)j<{A$Dqb4)K0C*Y;||% zb-3G47|1rQyEQ#xG*NNlzgd6q$Xm~j%9FCHI64Y`jL#BOk&~QEzGc32`6?b&ki=Ey zKEUT$cXUdZxTwF6(~Fy0@+e3iJatE* z>395kHyzJ6$GW}wBt#y0ba0>z|D(q19HY~?`nBsMCx_S336a-NNgrLjU8AnUj~5@^X)hv^Iqi|C$F{oh%7paiPOB08V66 zBp3;kLL%+$(JWL9a0|k%gT+#S$l=o#5x{W~IFw4eP*uo46sZt}`(ojUOq6hF)vAtb z@jxQHp%VV^bb$gT24%%5s#;-x9EZ^T?^c|Hso3|%YK@OL<-_^BVeoUhc%{k!o@`df zrFiSWxB2q6lY@)Nr!uZ&7trJ%4jn(L&mZw>i{Mvhb+D^i( zzG{46wvX<5Zyn0P^QNbNp*EWij(k=^zhk}H%G}YK_Y-89omSOf7G90_9^11v6dqr? zy*3H9$Q_H$QU7B%_ zr~cH?i91BvQa;u)S-Yp%<5T~2twK46Fgq5^% zE+7tc<!Zys-kHOwUCFXZD0_gdQLb13Bp>mTB{$G^6XH=74*Y10V1d>2VL3+_pq<0mN zW+>8CY)BJn(o5(aLkkHt^eO~YItVHqG<2j1NEJ{(1VmJdQY`;$o@bwZ_Otgm?-=j- ze1Ds3jk)giTi3iUsEBn%6jO880Jmjx0Erqe*e~wjCELI8K1pRg_inPB(uw?Bli}Eb zqKkBWOflfhTT3%idcBrmtoQkGrs-AJ`&s5UDnDgeIlcarV?&((lxv$V;gsi6R9Tki zQD%5OnfDgDJjH(|kCy?4pl%d_=T0oYGe1f6Qe%CH~@&_9I8O4>bY$`rreNp zeUfWaRr#dQ>D}kDA|mrvMRB%dRpsNNDz~bd(ygtkr%iO`FE!6*c)!%XSaox+tJYg{ zd6de=EB&OK!F~JbAZLMe!-##=_VZEX7mpVM+G<}LC!MTh8i(!MYnzwc_`Wr-T3X3A zucudkYuPSakZs$E{!;f0)zCocgs&u0UP5M9Y)*hWM%%6^FU^+g(b}&wA{Ss%+Hk zkEwG_Z;WU_WnLIxLV5m}5dKO2F=^uc*#E8YaeLtucO~ej*5!M(H@UJ5hgZQB1n_FX#_VCBtq)g0%y2=T)>ffMqD( zfsOE$g=Ow1LHcC5_Y<;GA;Np(!PV>sTHg%Vm4Uml>2I{1^dFCD!ghtzRAc+=AF69Qb=lz1EW*M8}_+UlfSt(;Ayi26}G{WrWWzezje26?Hk zy9lkr@ZDAUU^)x5q#YOx)z}TFOPqc6+aOz)ZSs$n!>bz?Hnwe0`W~>tU&y^wPyV%# z*Uw3!zz)k@5m_M?4=ljUg-YNSiU`ZNtU)M8E3B=B!7G>4ZG0#oCtU>Z8dbMfo)sX- z3-0*AXghJ28f0`I2pih!FqJR~=&hakH5e~I4;)B%*IGhk_gNBuu_1r9?5Y53YyWxa z6^CHs85eem; zhGXbDIxDK;EPgI*j^Zaz0$A-7O^CdRc%jo})k?YWCxWLZxtFxqwc6sgy}Z3ldwAz4 z`nB_lA_q5Ns=92-7Yip+?QsK2gRbV?`QI{ zge%Ja+9FoXRNYiie%e7ts4XqxkMNU~%^YaSAc~UxOi-)S;1&o!RV<{-YW79%w8myi zC32eh{RgSjC}B7Tb}i7?JVr%AQS}Q4Tlt;aBR5gcl*6p^*0p9qB6%rCn+$lTk)Qou= z?&D;vBhmX3+V#{Zbcb?!hYQehF*p@Ij{d9YNCR;A2cYG9bfMm^9&J(ydeQdYW!Ts6Zw|GN{^ecY#$5{*7HcmQt zUJCEr)KdF39@=jiRnjPB@mk7el>x}TAmAhyls|m^{dC8+nyu(Q*O0~zKKfCO+pXsO z>2jv$<<2r+EXDFCT28+x5csoZdYJ#}6{kW~+}AIs5o&XTN`VdWU(x3Kv-1F<>BY^j z%dTNZ^Hco?jgKCBdU-FroBpQM(kSrFJMs78`c>s*u4grVcX_SPH9dVKWb!>EBYzqi zrT8ec)BFD6?L0TRAm&Hc4CMvC%_3@j?5C31SOUM0VHXjMY4?U!~!krpJZ& z&{?`nz+ePmm$p%`CQO&RICQPf7p9{-a(rLqkt1?HFGGD@x%v2k`eF_BHOjyI=@Nx{CZO} z<6ARYz0KWk&GH!36X?_)G7q@HVxL+F&$j?XGQR7$jF(;`wjp6`J{8^c*r^ON1=Y_C&51dz~+`E^9M6e zNVh-Y85iG+Xu>K^)g8$`=r~NF|7`rJ@n`vI+lSsu7pm>*+@$s`j>8`OQ^o3i|HIAV zu9=+hmEu=NDc&~2g{KwhCE^~RUdo;RJ$$J4>s4K3Qo)%&-@Fx$Qt6Ql`|bbqMowkz zr_z6;KK%2~%mdKTgFpI&6O0cv2xcS^z%cupoMCysVb|kjsP+=O>;7CVXoo=G>5bsr zJCWFC{DD|Bay`I0-d9XK^30~Idk~&^122}1eBHej1}2aj^T&&=(?nDcU^jD+RdF&14kFq=Fm1t?IQd?8i7|so+{lf~C&ozy#Wk$Q8V|-< z9mQF0#+?l&+KETXZiF_+JKT=H_cbu;&YgH?Glv&Vo{B1w;<*v*GZEzS_y>pak(?pp z1K~DG_Q)I(A}u+Rwa41KU`xc6_khOXG-p#jk&q* z#((5^(u0-eC_Klu$U(=FTr@~DoPOvQGMn^9-2T)+!oBshu;!R=@wT-=_ns=p`&FR( z#FNbEVgUgpN6PFy=3KP?eK?z0YJMQ}79*g2@jhZ*Sz$K_y5XBZOFsLV(ys@(bsYJ3 zGf2H6N-QvXoSPy`wmZC#7FChBLP`eZQS|4~K7{DK3Zl_5dS5pc$g`aYioJW7rA=X) zu17unVGm0q5u2m>53IdZqMqN8I0;JrM!m_p3mG^H(Uwo9T!i$`*{c%L(s^vJQShu$ zkQ1Ove~cE*K{r#Qwl}tH9}1kk+#yewjCKTo_eb_S$`3KSmy}HTWCcT(EX)R6@(>ewxw;Pl zd5BBMy{#bh{{)-7*P|m3Q~xLMls%D1Q`0yn5GLo@PH1No8U34f>C6z?jz$#;@`g9C zF3}(kVz&1xvg8bHRs5X-%_YppC)*@R&`!yQigO%KJFoHpFlA&4%`(czoCwHk0lMVhOKYjG z;*0rww4?=DS@O|VgmN=#W{NmOl~N4Vdc>v`QAbyCI(^ZVO+2aUfX&esthB?N(uy7> zJ2%)eDwahcyB@#IN#XZFp19@%u8dc90=TX}Ji&u&wv0MB0!$R5NvPnp%bPQ0k%J<&{A8}8s>-W4W-#Q=38xyTDJC&^D#_6lE%1#0ZGiyHuPWK;;WJ= zFbv}3JdqF-$!Jvr-G%lOt50&7J5@2wKI9CU=L#iwH$)g9240Weah}o(avsQd%QJ( zZTOa7hRnyOZ&t(|6Ev!lWUp&!k3Xgz+Xw5xE!;w3Cpu`XLqZi=)U4%70vIaD=p2fU zwF>0-X%MYq^d-Cie{s6F(<0~-&8h%Fvy@M&Ky^) z8mK~E!9M$QyTDL1mn5EY16G+98iucCGkjvtx?5^>c<(Dut}`#nas2Tyg~j1D&YPf# zX(%j0t701T%>yA!zts8ZPQISp7{{HbA1%UR6OXO%b^$!l!a;N}C#x0B6f=S3#UM|A z(Kixge46+Q0b<6^g#T%+2va7~f_x`GOLw_PUY=;yBj?+holHHJ85}3W1yKj*8s6$W zGmW!H!n1YA6?Ezg80f~Y1KRK~x|2B?A&APNcD-fB=zo$ru0+ZIgs4*65EF>wcJ|@c zIu=kPC&@ncD8k(>@{em&eb7^>279^L8tFiC1~10+ce4Blnm*kOSEsRE_wzJQx9oV# z124F5(orGR-yQgG3fP~*a#RUOz<_S$e-gDP!1ov~Sfc0sw8HthVhM1?y zMQjt)^lda~gtPPy>FVN(9(dPy4vo0odUL+FVWd{Izx^u9E1#xeh0SQGu5hva@PYU^=MA?xRq|SyXSVs|-%WgnVcJuM z30@71JiRR%A~h+Y_GW*345~J2Ye8C5cPHy7Y;lM4H$6&MO)n~A(+cwEQ;D|e2#$A& z=1LykR~gi6iTyM3<}@e<5gaReWXl@lCzAU(mNO_=R5}nE6DsaJyy2C`FnxD!w9+~_ zE_Ccx=R|1jL_m%o&C(gd*Qnhx%bu72$voyw^7Zv3OB!7z;V#MkhgC5?BAEyapWQOuP~R)b4wE~!j^C!y+rw;=9;2jYOY*e+78_ zIr6ZQ4DH(B3{yB>%!}x!5$7i`gR)Gmw3yrCe&=qKkd!}@|L~(!-KvDwjLzq!ggX-4 zGXdr`J{Q#-+-H}3vV&f@xhI+}EGw_sh9Milzm%TYUc4O&mUDlBYAlw79L z=(QVxn&g9{)yV#hr=z6!#m%aXrEbs969bc+8xv<+KQf;P9&&=|mvhx#l5N|P3d~Dp zBS;UWpEo5>r~O@&;f#IDFO%{&a8P-^aj}9d-NjE#S;y#Jz*?rw3r~L*IM5m`nSp-NVRNM=mIg+xJ7g>xbN!L*?)LiE_thq7LOs z4)2{gN}wNyU1CFgKf*>H-}OFXBpfMXesQK9JVqT~jykS=bL{tYKL_>ubjh)-)^CpQ z$IYl;1i4?)a>tI3enBzl|42Zb1{?th!@d6qI@F4mUX`$}p!9XcqlJwM4H`=O61mU0 z{U1Sxh8a?;D^{-+-!lWJuMQO&J}(@J;Zo4h|l5i#JFUU^>mw%qj5 zi49PIqiMFz$Ic_HDKqed?-GBdkH0Ov?DoH@XRTGSK(5KJzE9gdNKwT6iQAcRTIR}F zhfB%k!wEJUmuZ#Z7KNJwDOU=qKl@|u4)9*VY7wQmWlb-uB04Te&+*qWXb7Kcc_+Qb zCO~Q7RT?p6<*v{Yv}Fwc04NHfFr4FYl8~WeE>;DM!>}n_c?OAOC~2B<7t@^_ zWb>3hXMjO%?!dSKz}JK?yVGou$RD^Vs3+jEav3>%0XhLbM>}~89{ACqZM+*?8fPrJ zj5Fpld^p_&r;I!CAAWyT6hG(en z5jg)aljou8JLB4?WM1I9z0*g#`Vge?8@;g7P7r~MkpU+N+yVf@bnqyi6zO z{*2;mtC`ei3vBuq^*r3(e}jX{{215eI-#BhVzvG)ybAqMtOILlD^W?G&~ltwOQ+tb z*^^e-u+{9K9^uqrbTnrRo`{egNa_Nyy%0Q?BzhT7v*-KLI<5L$#O- z&GjWDDi2b@!T|0>)l~O*QO@7moPk^VJdr2&sR9IV-b*K{G-Pvpi!OHeM-FnkXtq_ z@v`Zz(UWC>!`JUJM|Qwz42fV}`oe@kW1P+qsrlJENxJK;Q%R>GWrZnRd)*5l#QhzS z^F(-FWkpY10oDW!lVfLnEBd00TvE>si!%UMcSv>sjYB!6%;?V0WOmuE?C;iV+1T!W zp*er7mK{mk40~=OmMoEw0irPs<)ZPnmo5`#+_llC>Uu?@oOfx^RgtNUl`^cY_LT?U zZi)^49lrF{T|`9TPT%h-j4fU$;{j=FvZ?K7Ena|ESF^sB%wFXqZgtDpraMyz*-I4H zxrQrwGPS>XO4Q`teD4jeXjM!Tgj>TH=DWr{q(t-;uHSH{^3INh9z3Tq!p$KJ-6hLC zXRlPj-l$l;#tL$3-2cJq;%vO|jy{T`eD$&gbCU_d1IF+7@((*UuRIN%9e#h%cG$U- z{4{*S_`|PvhcAytpGF=IfB0uTM+89wn4bM!Vub{QICq~$bB!!BsU3BpQ|e>IOje*b zpLBDN)f1IRR*+#wJ!guTNn$vA^kXa|7KjQxi;aTgu#A%Cv|uqBn7bmlgV~fumO_Kr zuF-nMu7XmvOxA?>jt32j>PeSs02sGD#~?M1E4I*v?a?Sk5>E@>Z)W779D)M5`vrN? zQKEdQ=O$Dj4Cy25O6@1q6EFKcT>}B)=U#=MGw)Gsq1r^(ma?T%yBJRbqc65ZLnP2o z8T{)L4AdW?cu4>RD-Xxfu!A}&&&!lYKVMZdm((qK!F*#}%;v{R|9UL|oso|*EbNA_ z#^IpWJ|s9ol>vqC;!nUM^w@Ee=-kV~BFmrc`F_t0rg+~vy$!le{>~X@3xxV1qT%WQ zx-{uWh!hZY{z~botLFP)3RU5T1TRB$VV@w5Krk%t=B%d0m8W0%9=cHQb~sQTq)B+q z>4@uu>JVl28tu^#EbB6-H^8>*Cf9NjG>XUN2Y121nLG@(Ko5dek1%ll^&X3A9lTKJ z&7@2K;B*zj(Cs2ZYEJV4Di#4+OQnPqLe#>F_ji>Hza%qG;=*jy0o zbQ&`n7rthi+BWsqYLBtl`gYAbo#E-QsPh8#>ze^M;M>j?%m6^US}{4F@BersOr3$F zg#c!kkJ2B}2K5%Ty+0f~Jk)0FhRAoJ1+od{8Oj4<2cai}Iv&b^He*FL4nXh1#LQ^` ziq?h5#>4JNYccl92J{Wrd}KHIMd1A2zIEr#FPJ)Gx0p8wWO@~FE#_jlOXy{vd7h+B zQiHmE_Z>Z(N{Vfs17Y#FjWjubG9S4ox0DbOW zQI6fRJ%@KoRQB&R<~|Ws2GJde>?9|vfh`SmDpw6F3SwZ9=H+T$zA`8eh3o)cwk#VP z+Oo|Nh&e*hOazwbFN_5nqWx*2U`2|315t>Z6s1fFh2ibFOhG6tAYc%sh_golpkt5& z%O*jdJH~@4%0w>+R~Gfy+5Rt=`zb6qj@{8+)JA2_Q38AGaxMcB3&QT$^N>IxVlk%N zahLUCuz}&n12!yF09hY*E!ali89)NW5HS!JE%-(-(Ph)_mP&wCF460V=(fpz;^*ye z9>3Q}Jc$JeHIEN&iH|&rzdjdFP$9+UMns#FNV%jNL8OE^QVQL`JL!m&u0qb|BxeSb zb6p&>bIFBsWS%B+5qCoAoGn!)p)5Gz=ypOyOG3@2P1RgNJ$K^T&xB{@i8Tg^O}UAW zNQrH8iG_oSFS(O4U`gHPNeKo?{kcgoq@O;NMgWOa+G44CynJGh|MDHNH2{uFU{L5fOkGkzd!9XPr4v6 zO~@i$fXPiXFTI$QE;*mhrsOQklks>kUC|=r7BoXiJ1^rfi&J$z@*~ds?{IcH0Q#37r!D!!kCVZC5HI*L9)0HI&B)Y_Oa#=I+nXDNH96U(gnDxo zgnGkdG)epyOH2BFoRKf6j>r%3C@&#FD@H1e93!GJ#c~V2cwQi96|S;7IGlcQfIAKt zGL6*HlMw+y2Dwb?M=r`i0xO5@S|6#n5y>5hgeM_XyGpS;W)(uL0vO}@OFo~9zv%Ug zLG4%A4WH>U-5(JF>#qeXZNn0Uj7WHMWl_8A#B09dBI803IH>4gEuu21Tpz1+mdLUf%e>F=KX0uoFwpl z9(Ft9)2ssPmG|xOj$a1qIQ^>bS683bOb}3|5z^2b)Aa^}tL~W67)~8yNiz>~29Msd zqt)x`D-xEEVnnaj_--D4>hyuKL0~vr_Cz**w8p|zm(Ij}J!RyHZo&34@?3(5#e9iN zn$S5%_9*H(p@C!>WD0j01)_tIyO)jy?XTIkjM7Vgh_nB`Gl2eh`LxLL-}WBFCd$#Y z*iI|&vA*Qx-(R~Q-$2pm|6R+$ladMjuadzaG@+ud7$%F%la8=LJLw2@r1+<$ zeZf*j!7g+1rTVB-C)aKZ%*Xy@e&gUD+>@(=!E%}|CY8Qtdnv*)tL_S=;0(i8E%+A_ zY4&}EyNbD{&)udK)D?NyILsmC#z~?tf?w~Ruj;8ZHrt#Ep~b?HH&Q-nS@>b$Q6hQ> z-D%&oVNM}E{NQfV2(0pE<&6>7U79vhsYr{Fe{N_lhsQD;*D)gZvGQ_Ciswp~4xu;k z6;oYU!?vTu@E(mI82U**O2*Jk+8xRx>o{BrXH^F`tv}jTDaciLWRS*FQ$7Yk7wmxY z&gdm!wMu{9s^$_76X4Bly*|2&oRZ!&c`h@-`9aRtX;@>2$jXBp%qh0jiGdyMfBY^> z0Wl%IPd7(B`1P5~9QPk=qvxc6|8GmJC+XK?wK&hRNt(c@B|XFwfKgze@IHaF== ztF2D}*l(Rd#{L)=Om}%aalpgqaf_#+GDA>=s&!dzhOpn-OwDy?F7Ixn=yJcX@=2FG zztv$B$bCgYGsaNvS2&BUAzKN%{#C{Wil9MS>z!a5@wT&uEBA6V`Ev`_n2JNxyl9k? zP$HOz8z9j-!-C2X^0v%#@)6-W-{0r`x2D|x%QNc#|A)4dCBTCI124sP#lYZ_)`RsW zJ^wde66{Vr3&d_4JbU~)<6ok>R*Z;2nzX~e@zRwP*;6SmTKCINM0GJvKTNyPb+#=O zEunXQw(%L&vG)8-wsSJZ#@YyVRg)A_ZC8aPJKsclcRAz(%|)`YwjXmEamDh6h+%pR zN*L}qjDM{y53KWpceL)?p(HZcEm~Aw$5ZN@#NSs>ml~%8|H=D~ zlNh$uj8y=y3Ue|W(oU9nU;FL(oI!#D1FlM6(ehLwOT%H0P&bb+_hReCel`)re14G| z{Q5M)51`%5wKM2|Xav)P6V}X&1~9Fr){2aPN5Yl&a%=MV+-jNUpWA&^YC_3RftF~5 z4B+x<9M&(R%K+GqFyJ6#m&GxhXD9%X%UFJ8NSFyk$PHd4%QIMxM7gYzNdX{$6Oc9- zze~D3Ie-%iCd6phnZf|~=kVAWTqW$5a00k-T$kkN zi5p$us|?GwiGDRVVi63krrrDuGBJrb^IY2)ncHwkrFMhLN?E)N+O!Jh9=&PL%uL?V zN(I#E47g$dD?T2{FfY-K$O0(6@pp-)b0WZCy#*EWL~`TVh|(920-hDg$p<3XBchCP zy(vS1ED}A(s3gx}Q#6U1`%6u;DnF`rMs z)dJYK_%62#1uVdy2|lt1Y>FhO23?>v`o z-rg(Zt%R?_2rA4mW_OYP2p&9HdEB1Fvspc&6B-NyUQhE?<7{gf^f1Cy={;CQ!jEaN z=v=k*laMDhU%J>+_i+7hqBd0-=U)9;D%a^xmF|iwWJR7FOX?Z zHdc8_O12Nr&*CokqHp0m*HfD$0cw!Un<#w z4C65NIIhUgB9@2%ZY_J~?=nBNa{3xQq8pEkS{E$f&h{C9sVg%49`(TH3 ze@=+QO5W`6d1@5kFKBS06pe>rDetGhgH#OS;MW@@ZDd} za=uA@jDqatwJp_M+wO7vW7;IL1iz*}wtY$W%>q_+v47M+G4dYB^l>Kq zm0Q!btm(q6izS1aoT4{!>S8v&cqw1uw84SVF&lD+aJot4ubYuWlZb>Z{jo^iAH_#f z;=gZI4si?ppxWIM*F9r2K|VM~W%+!Ai;o(`jGuZW@VCN1$LIzn-~X|gjD*phsuR5Q z<1wf0XXE=uH*;qE%aleXt_Fp^E!vtYS7-fv4#X=T=dy3S@c5p7j!|Ek;?K&f$&$Cq zC8w)y{H!v|k~C}1zg-vFSZ({a%Dl&DrXhd2@<3-xkSm(d)Ye!FCRJN+7|pi5`&kz} zT5WSUH2d<`&!+^|8e6FGT=&+`TJQTX`wyyspvpl5CAr2?%y@pt^59wSXpNKd@ch5= z5^JrClp3M0?Y3Z9fV+eK@Vl9|gU0&gS`X(h^ON*4P7tJ3hQZ8u;r*|JW*Tc9UfF$N zYW<+8L!iz#XLxa4b@o}`g|9w03l=vl58LKOzqveWpNrZIY<|c3^aL;24EQ#;1LL07 z!~eodTrED+wYVv(rNe*WrL*5cP8HZ})hWL^xfK)6NX;&c&A$36P#?`D{hom@=Ox^! zo)AEd5mqmOvU%0TymGf}bu#Z(Y5`x8o`9SQH*e)zmv_(@vE*~n;@UfkSI_ie`tlBd zuaCzfqX`y#*lqzjKK|@U%=Zw|4i;F^uld6csfM0savdMIbkLCcz=feFyD^G;WQ8Q) zzzLrl*X5{RoEH`gd3{Cn+5NZjsSiw!>1VQA@Xiu7F-AL&_-Y?kCt%cOXV^djTew(0 z^a|@GN?z-UVpCJL%VDGpB+$IWApT>8BxY&`wVjC**sedZ5?q0a8-OnzU}Lej?3k15 zYFIsXV#OZ6d-fnDjsutI>fw_Awn$d-e$39MhUp4SD_5IC-5soEt8@B0b^vW&?YzWm zi{%DrfTBEs6|p>CG~I>v_dzPRsKRQ?@FI&1sF03QX3^7(DqbbX5P}2p8m{|dv_hP) zzV>NLmFU#z5>&)uDg0W+zUE>B(QPmod80)yYbnY5u5lntb2;$Tk7QQwTPxG48j5id z%V4eT9?VTxqvjg0Eop5HJ4@GVB^%d(&yPGB8p5}<&42X@j>#MH8XMrs#X|U!tok1x zHKxVa@1{HmXBI8;K!sk3GmE!^l1%kmV;UGebeiUhxK9kay7s@8nYRJ*@fX{)Qan8z zka8_eE`9_^(B>-q^3_&Wwi1*nR*>zF?PU}Zoe;4Y4Zo{0AXi0*zBUzuxG}DEp=|ey zeoQw@G=5eMUX(ua`fQG z5>yBx5~e}Je=DGZ5eryouBiS<9DeO3U1R6fa(6Pl25xt)tAUIg_$VWYvb0{@N(<1~ zZZ(~M@&-J392`ey4+rjt+|p(V92}67t_GW3(&ByV(*5l6!uA61GURGd+Y2aRcWj-? z@&{mcJ1`eFWnD+(Rk5t=SVnDm=8YZ4IW*D{?e+%?R~lzLrouI8kahyA2@RsU4F74$ z$lmX?V9FR)&tgS`h%bleDiPBA0=LGQN%E*HH1p98bZ*03Iv&z~GMs42NOppU;e&){ zT+U{PrCzo>(M&DLhod(LXl|q#0iud_zq#W-O<+Cc3~rZ?Mv7Tz9L3nldq@TmJM`v%Gsmh=^?bU6ydfX2M03#EiDuVxv{HWX<1ip`8pz4C`F+RJjmuJ;5EUA4 zca}Z_5y!K>$200HG4JiTKBAsX@G+)|BOS*>execL6xc2RZPdH}s~)vaK;dZ)LGq{+ z98;&hBRLzDNwDxZM0V|jrY*y3a(!to_C_w?ED9lhdzMOl;YPIlb_|Xi}ur}#_Hf8>AA_;%kZ3F$jn^I`yH|p zj(H0QnHxtuQ-LhYv!+bPmWx7+i^k-&%yddWS+hRC zkc+h2=8=#zSf$pL-V=;kTC{K>Sf?SDk6H>yj3}9&lGl> zmP*M=EITxBgd)~4{veiV0+YTfD#4bKU7XdO%G4W@ zVy5qGP#H(4<@vj$`Jjv3fA{0bX@9B7^YBTtnlUJGR!&y?64mziZhI&PH(!^7@ zuntS|u$#Cfm02VK7H*G6ewsmumHYmXfINaZYBv>%-wFPMMV1c)Zj3wKY(hPiud>Io zR&F9wXb;a>q`TtovpC0V;M0l?$&_5C;vrNQP(+b*pqdglE5bCX)g7w$pV~6=J6E@a zLUd;tr^mgwaB%&dlHX=tYw|FQ>>8CrR3JC;VPCPNQ$vZ(BL| z?k0oifP)f&K~$Mg-Cwyf6RV1==F#`JnQ`m?ocU(XPYLI!32#uUFVxlZujb5M7JYnX z7|hNT+P0C|S?58782@>21Bo0Op#Btv#)NZWQ7scY<^i*NC#F#Rr{Oi7kjx| z*h@Bb41~$#H(%jNdfH|YvCxpQ&^n;n>S9n_uuxPY)$IADwJNNwMyjo@z3pijk-X5D z_`9(}&7#4oZEe1#U99QxaFadn^Uj5~`oy-+DoqM3%>#)A-NWsUqHV+N9f~}iV+93M z?w!*M9dqrS?-n{8zJQ<8S?n;`7Cn3&gTFg_6MYrFRE?=*EF^Tw{CfF*xMMT1IoRrD zv-_*#-${F4k|<&AlkKnQYBZb#jnRa*8%AR;q#^iU4&H7re9|#COxreo#rdbIC#>_2 z6>V$bTHucVA_b&ayW}c3| zd;AaWI$k=c_j$B;oK^482+t+8TA>RqEINEg+Z*%{eHX)D`b!U-Rv#E>Yh^1Ou&!yl zlGG>gyD!hUn`qK?i@w+wY}J*FXiiOPOIvJx%KSQgn+8*QnR%gCF055gy~VYoFJtjF zXA<$BVGE_$z83g5JQ41qOHfq&{uTZPc6ZdOW}>QagcLq}reny+q{r5J(sKLFZN%gq^|7~w z6Ad1(X*F*cJAFUXN1QPN79%Eagk^>mBL=UH49B@oY#_!uI!3N<_emzVGCdspRx=Jw zeslWn(45H>$KT8go%UMR7VirCR{l(^g-?Jr2F;qMud+_xh?uG|8GnU%E50;C<)0oI znNjl`_m61j8SSx_dYO~;mUDFCg~#me&bGGUx0`BHGuE%iJ80{ONi~@n|H2{q_7u@` zQigR}PGeYM>81MiII45Z_R1Vp=8a**q?F8X#9~X%=(r>6yIqf2rz>x~S;u$yrnA4k zOMf_(_;*^Tv;R`fY=QKYl!>!G950Z0KhJ!V843AIv-tY9 z`U-?W74AWR4Pl|~mEb4+l}1Rp6Lk?GyT$ib?9^Jx5rHQk=Ha67qHoQ)nAo*7)#^Vf7@se!&kj4 z!7_9>UPfY7!`9yMG{PxmT}1r72idMa5V?UvmK|qba&PG!9n5Qj+MBZO?lAHFGjz`L z1N!erj*(f>CYDV+6W0b<`wKXWTJ;U@b$xDq1N$$7>|5BiA2aEPWsFukb;syO8h7Ay zH0n_#9^Qq*)~9qbu5oow-fHh=Nc@YH_kxrdGX2oIEN9 z7hI|rwr&=1PT<2^gK!;rW`#@pxMJ|bfk%$EcIZ1XsX^XUdB$eLCRHrsay<*SD5EMK zVj!Qcd4%-d$zT`F*#TxY^86bs@#V_z^ z*OO6#SNsv|>EPGxwxqGM%yFm`N|Z+E_V(+Wq-3ML1O5{Gp8hmZB}#6F8RhfMBGZ7i z&9Wpa>I_EAtYb3+)@E)76VfWZI-4dYuDS9XJSApY^4*K4Hj{k}Eg-J_xBd2$1atOh z@9w_-+-$?oud4o9tp}3a5h3yuzB=)im}0caZo#97FTWXmm0t2rRw@7&1p=f0FrBtm z*?Hd?P~~ByB=(U`bJvVC483~g~!zipP+ zeLmS;@nRgJ#P!sM`9Igws9Aba?1A$pRbBnjk{EyShH7dQcSafC@6ccHu8qeA!<|hp z-B+o*(VHN~HePng)Aw;dj4R(k!jNPyh8Kc;Dxt7dYWP;jVAs%cgT2`3AX*6awMD0d zMQM@pF;PaeKoS$eT(SyhzCWDYG@l;h*8HCM@kYxk(=w_GT+p80&F|mB_(FKjtyFK= zX3~xq-$XDFkVqjUBF+%e4yPaS3x2G*J2t-x&lL$vpr5_mLi_gek1UTpNh$T?HK>ID zbtqZbqaHR`IcZvk&YRmZIIUY1%%GN=A1w4JD04ow=@XNxl+MPpo6anv%iSKNR`K0i zovv+ZmCwSq5}CDfy?pdtJ;1x7pbcab)9mJW)|>3i^E=~5MCP^ zoou@5?;D_)h5TYGDw+7C6llt0jnuv=`L2Glub=y`wJE zJ%aU^3UOwU^|g29yVN#*nId^B{~E?o;Oy!{&lmMQ$)erTQc4QrWG9wuSs^HhcxdNu^2H>DbFLI{j+fTc?iqI?v=KVovrz94{x8M>T z+Jr&L@OL4WY3w(1w9V6)qHF_4Lb*4PR; zDg=K)HCVf<{w-Lj=(|aE7a6yFPDgt0Y{>4=3Wrv#q+ge=s3qA39X=@|t!OA^k~VS* z<=Ct9Bq33$#SR&Mq{puQNn&SrSgjjJ*(868d;7d=K9({-@2Za7V@Svj&(P-J9WZKD zSb6Irtix-RCMI7gcrSDg+}$OTc+Fz;R7$;8ZvAD^=Np6#MCFVthQ#|j}@$!84MGAz5WuD#0HK&I&)H;eAM&RNMubO z327?-@#)l07&!3g21PO8Ez^*?13c?+@S{t5#zV;4%*@7%#_968P>qU@RiyFH=f!e0 zL&U{PqD?In{7Vt{SJvg3uNry!tL91<>I+-)y?W7ebD2Hk7PpaTk$PRa_@51Lv*3$y z-_nYuFSr=_NnS5X-^qC0R){;Uyjgm{UamX3crDRw{L#USdn?v%x8y3>R8%L*&3&uZ z4=M{YRiCIRe09`&YIH3^Gr)w>Gx>5{)wBuO7%S~rV!qHeQy^Jh=Nxgz_;cGG8BtpNEgM=68vycf^^y5M)Ok&6y&U%2_g?x$<>ikrm+RX@mAH zi&IM3FH{3uU4OzYTl2FT3N*gnlKM5@Sk+XT$|v&+JA4)}Xfl>!udx5Bx)|M$_v>er zymL-$Xhd};&b_b3g;i~7nOCV2a#!~1QdLLvx3u>8+g|tc^5?q+xf*-#e$#DaxA^c6 zr^$tguVSBmFK%|DJAX9FM!dC}Go3lre30xFx&N-1zN*|%-TA#;NNgsbIk-B4_2jY~ zvV1I=Yt*iV1GP;pgz?13u=L9WfUQ;DrZ;xKSbAh}R(&Sa#;obKu7j_FyZx?jP8)~k zF5!)uL&LA;R@bwe31<*P`CjDC%&_mVVe~(%g2U#$CfQ!%7FM=gcbdB=e}2g*u)epu z-c&JG>r3__VsO)u4B8i~k2{Z{ZYW{P_Dm z)b5hIOE*h5BGMqzAcBC>-QC^NEZvQ;ba#gcNP`F{DJr0JgQN;)zrWu-XYQQ2XXehm zGy4xbv!7>YKksZ79$N&eD-kWX`F@S*ObuPZ$-g&Td1ovfbauP!9{)CPV&bn^YPvfOdi z(VOV({wDwHhGJ*uLcOz{x) zrDGR~43NBZi>B$@xTW{Odil@JZ_MyJo@>{KhktH~7luD6PejHPh&&>*|NdY+@tYJQ zI?Bms{ z;s4YPJ~Pi0N=M+)-Fg0Jby%NVZSo5fwV+FhFl&u_jdq*`7lvQdHrH%9>0DVV$gD`p zK5%ha-cpHt~{=dm3ANm#xJ62=? z7l37k{t~oJu`N|7QMVYwKo!t<|g#5h)BdCw3OX1JLAzyIpsJ;zZxEA7C zZMuB>*lH1vTLO=jpn~5pF?FKm)B-E1jk75 z0gP<yv_Qg> z1q}Q>UPz@$M;|U^NJlGD@Z8xGmEnJTa845R=sjq2*YKSl^$H#s$r2}RWkfu~p&`e6 z#?AKSSIkn%XC)`#Z|NtghpyM=&S5rXv13mBj;C@mW7aVe^QYY8;%<0e_~D&h5sj3& zx=RYj%?j^E$G%lvl6v~<$8pMh=ITkIw#a#sNa^dV%t<3*c%{Ya{jI0ahbNZRf&&DT@4l$q7`^tXB0w(J*t<`6*m-3i}Mx#AHP^_Za+oVmRan1A3m0y!p zB4wyfn#nshBcme~SdI33>6x|%-!)CxQv*#O{5-s$GVD1rdZa~5@GB*inLmPmZNir6 zaYOy-u0q6rRh$zhm9qcK6Fj;{clEGZDasuSBK-GcthNK~P#AEx9L+R*T6zZ{sNH2vY5c+LUC0fRz;i7fVH_f3eKqFG^)g?{N&-D{7VgW` zn357^L_#~hMBbb-|D^XrOd-ZPt+|{I`nzNBtxNSih&OFi+3KprsaD7zrk8qBk{dj9 zrnZ5MGdR{DH~QYFZsA8P_;CY?yt6}fk(w)HO{n&<+7a@qWPK|v*CWV{yj?GSjI;7ui!wi^Oi1y{T%#hPHagha<+B=XxZLMdV`}D-k{EN!_-HaKSm1OJ6hGy@kHmxj6 zqwSvq?dx%4(w}-SWv^OrCLFCrBK6~%1XIMxJy}6YYC8zZdm~E zD*a=$^Xj^1p}xVZxYzjDM;D@YI_TT!XnbOG-M4cT7Jz~Jevstbv!&1&*#5`(aE79H z-Wpv(a70_fBK;3hkAiM{P5-r^8?Xv)zW;j7us?Tp!+hMl)HbnBb@Z4w+MA+3)WY$x z5Fe=QPy8qFO@Xn_ezq+BSoXdR{3lBvsFK{Htk=w`94Ub(GiNcLYn#*;l*3fbj}xQn zESWysj43FdN8$q;+ckdO`_AD+vTInJ*N7hNMH#4Si8bS?$heB|d5ZDjPdbK`4>M$* z+3%;H_|zq9HScEq0; z%pqNVXHxKfXOqb7W!+oqUueJc)fYKB9(DMRy{`~x9GS9b@XK2?lj>-0x z8@c4Q>AQyx(UP-|)^-QE>jV#?rS)Ik(p)>Yxxu&nx=B01y#|Z7$1O85d^^S9yDy?_ zJ)WH3cFRw?_JTt0<`no&6I^MQK+nXyeBT{d{rLOyfK2=|;nUv;insGj?^{P=?>%7* zM#Dv;H;b{(N4rgPtz7b7UAJg9pzD-Dr=697 z!$MG-n2Ybfp{_%2`9YUXa(`z=$IcI){W!7mHDp#A5A@1^W=?k_ebb6=k2|BVPU$xw z%OPhETS6AGj9#m&X%s^l7_fh4%unA}g}jG)&4$=487%~WPx7<-t&2{?enc&rYk|G( zDMIKv-Ju{yVHc@F>drp7@JuX8%P1=rN&w=`$vx>d3M7(*^G6n@Rwj9Z4G1#0DUuR zv@i>9*0varK>xVA{MbyZXJzw@?S)s5-D zF&$V=PO5}!p^~+I1g#K?>eASl%jP5$#uhnYX=65Q7(_WpOn7wQ{kTvel2H3J&PdK< zIr`PGt$i#6*l)u5a%p?%6E(H<=3p$;%_sD|U+O>QFaQQB%z+m^v_i#)Or+evZE~PD zqu6@NfgQSz>(N%zWtxa>(r^zCI=Qszt zVUulVDB4E^>Du?QhCZgsjIT_D2@}e#$I^ABi^EJ5Zc-U0b*dV??qj1S#j>niCe1k2Pna&<2-0i*_-da5TRZ*L-Ox`3KYWk@ysAu9$%QkcZju zlxnQ1TxVH*oEgsa+1n7d<}B_-&p2>tKsNlNez`+Wh}r-a-i_054ihD}Xq)QtPGrTB zzKh^)+3V`cC}otNuCY~**}G^@i;A=ra%;+m8n^iUaIv0(jg`vK)#Q|`!c3Jia)_-h zDDNqSUoW{`i?BsmfT>Mhl}D#L%qQSB+InS_oU+ zdXIU%PUv<({Xld@Ql9Ia4e`4hqnPSIk-IwIMcXu=#;d%5C(6!8Tn){m0lPMhcuU^h zel|e{WxskF@g#izt~Onbd16a6?m75g4TvG+?~d_&OXvbW?|knJ+E zZQq2~C_oV;%kC6f-ID6tQf*UvGU_w)u;1(s_KnGn;a&;{Xj;>iG6>k)x|Pc}Cu3Gd zTiCdZ4D_mmkmeWEjd#BF+%MV%qw5RUi-c*sxqAFr9K(2M8l;q4-snaM=vsM$8pS%} zE!gXV@_bIgVUjTo(t&BVwQojuQt81K*dj&{v$Ccu7hS_p(aE$(wy-nbc5rrWp{=v} zpK7jMuLPf3iW__1uWlT%rLw;5-@N^&v)YAwBMJ;!O~&fvZ6bzLx}`wAR6VvBc{ZPG zI=io;?f2SSb)8#ioYBU3PGIso_L{3`7y8a1>Xjr@oUi09*}c2PTf z&fC7%e_HCUy&I-V53@Y{qfr_USIyr+t-P_;X13uofk{l{jim=2t(^t!f4aW~bTpH< z+_Ss!2fp_Utli7*{Tkq~eekZevtfgyv%%1p^F?$1bz_g+n`-?2TzL73+QIu>k1 zG9*&)L6QKVb0nq;`hd1RrJd|~R6i)teh{mJt1iY1tPM%gjy$h36rvr`=^JK}G?F>Eq|JLY9H;j(6xW;7N$J^D6bG(0FZ zlAtu!Xq0McyeeTLZrUh;XUs5YqWbS-2JKX9!Dz$UWai(A!l1F}o8cAm|2x#+|0q8U zpyTMo|C90hzbX|3|BrEW%Mr4((^y(6R~!IJ|GyZoPXd706BD&mR?U)x|7N^K7?g?4 z+n~z=FY(AkE&hvkAd5|PJQ7x`;UTWd)n2>QXeJcCHj1+*=DX7tjb^;o8-^j?g*`r) zdAr)_cd>sd<`bQPr&gA!)zjIu@qubARFEQZO+x0?_x4i+rnL2N&J#zFbgRinhZkk6 z%iUt<>>He>0MRl6!yTq4v5V==N~!b8QSq31=+X$?=4%ZsWIJ0@lTYAD>|N zPdzXG*`|T1VRmL=5c(>!a00$vvj~_Jhj}D5QiJggr3d+sH`i^Slf-!WQ8HN6TGA!4 ztc6t;aXclvn{kgiAU_iX7AcwI$OScIaDc;Q=42@l?yr<*K@Q}{OxN^AqmiDE~g>4UDb+8Ud=HWjhkc@7;D+xae|xH|MG|I@p;>q#PglomtWS_cdmsv@^*dAdU4$Sv*K%g&t}7cOYdnkcVqYAO#E^0 z)#8gs{plu=igFKpq^HtY_*(n`n0-2B2=mdQ+XooQ-=<+Wjb!r(8FNtcDAg0yvoXqu z>E?0z7^m}b_H4C*bsqMTN#lAfrNlIPC^bQ-}B>xzO zRP28(-zA+z(C062tVhZ({+{4oQZ%&I7&=KjVg6gLLn5+Qy5==$zoK_584)mtj~yiU zFx?6ToW?%lp}DVTQipW08@SJ++~jV3u2bF=W6<7sj^8;^^moD4neLfQj_JzP)6PV(wWV^xdyV55b&k}kCcl@*VeKC= z%q?c$$`R`hy_T&^e`Suv8!Rd#Lco(qFkQmu-JRO~G%*yP(Rve^t7^bR{7C7^x?=w< zxmDUnrmo1zfuQFqaaO5;ONT1LMa066(Ij#|zp#z<_|F(JMZZ0C+A*0&&*G##E<7i# zRFEHefQ8@<7ja`$$)zaF#*%(vEFlh;1$)fK!G0I>qnk;jDs%A=uSdW~j;hfW9xdMZ z;zIFE`C$I}w3oljSQPe@!dm9dZui;81?*L9xjv_kYC(W1P8DyJ&u{PADy6roVJ>;E zONbU;16`yF8JYEZ`uLU0;WZs)cRV#$0~PAk`z>waoDG-*wFZQlL~&d?E#gykmUIsK z3jsQH^zHR?TwLuQc%iuhQ#F3pi&~ck+WjUAjsA&TW|t1S8ARvEJDX?t~O<`5O-NqUgO}1#<9;m ztY&pos`0wm(tI9N^e!RuKeS*t;C-b{*7YyI`8nqw^|S^rPNxMYG^&(mPlvpjGn3q# zJ@ebXg>K2}TYFUryze1mB4w=a?2R~kmK%qz`u+_?^E>lHY1j{5ia=Mi69ZO~{_(MRs>oYCx0$tLG=U*b&w zuUB3Fs41*}^rf(walNLKYR<$U)GMIxn4*p4j>Rd_p9;_e3*Tsw6rxt55Sb0g=>2+{ zzq*7=cY2TR+k@B*%^3U)+Ncyy8r_ZUDFSmCmF)OK8HhLkvU%t?I&eDd^=Pp;t_&L2 z^QP7EtYF#x>Z=HWxLJQqu~uT~#IwmvwV#IFzVx3ZhI`q4+Q$W~h*sk1A6v&hoqezP ztMnCN!#j(qqxc;0)jcBZHuzd3^Kd?+Iwg`&mNg~zB)tr7tL$3Y2a{;4#}#|XQTBIN zvHf=^4X$YD8pA+9Ux@zNx&}2FFfbvx3iJ^>O+tXhw-n0HK8!A+hQ*b&D`H;*Ua36w ze2>K6deafaD!;2NbkCTqd*{m}{f}!H!!1V6L+0Dp!Yn&|;`8nK%ylk%31BAW;;*bc zcv4(&0$tdvlKa(MA<$B-)St$=ypDD}Kj`8xMLnA=B?gqScF7;Xya|T!4aXs(J{x-> z9%Pkrc5aLq>lab9EqE;2k6WeN-3xh0n|Zr$q?1Blzx>qCsOd;1jP+!yCvlr6;3?XoS6}e#;d@oY8RS+Dlum;}38d|=z1AtbsqP+2{&x!`YdH}# zA-VwIca;cZ~Vsf)RRNs{aE?#i&&+6C;Z-!Pgwg)}{m(lZ+|-_S`9Yu63;&Rnt9 z_)DzU?(22v5iVz!MW&!>pKItrmQ~;nAXn$W+DfK_lXLF%{HFO=Yt1*^&K5qp zV4H+LBbEnXZT!bBIZ^0fwr;_Kde?|vh?tuXxogXUwWd$LnV4xGtIJf55h_+^n$ra` zYWpr1Zg}ZatZhXb6T38Kg9Uz*K4P!_u$!AA&!eT0k> zS4_pgh1OU3RC=13%XxSef^OudF1dE!=Cg1O3SFwh!Fgtc=7kNo@JXr?Ay)l-a+8l# z*`m~*po(nn>x`e3K3SB-xHdVjAKI-BcGSsYl)hR zt6sky&Plt?sGIDmGuH&LLID7%|7``IHK_k24$SP=LEP%UuGX&w)UVvte;04~k*Bp9 zSHG*$us>NphXa<5{J)n!A`{+&-Uvy_2G-+jagZZo2w1i4h`o4oCsBN{gDnuutcVG_;6G|iwF&6M2Dq^ZrchRrKAaC({+SiBSyO%v_cMl8mbwb(|y zKO}@-oB3;7NCTS%3|mN^!COV+>k;{_%=vJ3{8o;s7DjxyxFZiCtnJZRi_lc7(2G{p zKg}Y&ZLfNpUK=*E#5c1Uw#b#X$Qw2i|NlgN{Ko{x|G!M|D2RPY>6kPF7CxTSW@*e| z1QCUB&^SMnd>jd@K^@ZFax|V=B97oWaoO`ER?Wh{RV}Pj+4Po4Mx0Mrr*run>9GL- zL!FVFjyMR?2L2EUO2$(V{cSc^s+LJ@U8BMEr3RACBew0|jX z+V}d__UuPxQPD%lpWyaN)6kj0C5BKpGEuYeOZZNP>6>C(8XIx<==I3l`Ydxtn*PON zd-4$EihX$^B~xruZcZMu${xuS&)PB0CY=q| zp5nuXxWG5afmJ5R_?E<+IcymVF3HFQX8L{ucc^nbTFkMM+y?kr*NKI6sdv{laX6Nw z7y)xspt}Mr=zg5T}iQyl4 z_gQKc$N=yYoaR*E6o;gj9)EyWjrO7VL*MbTCZW24le=2vc@UiExsfT!C|np=S0f{9 z7LSCU;cY}9E<}e$CV+8wd6*JIK_-#i-*QzF%v*juQ7864LY;r)Z=$4yzkEz*&j|GO z-_G|<@^Zx!lYcxX5MPhQmPH>`t!N7PS(Ip$WYT)c1P9YF;#pyYa_yo5wo}4kiWq=dF#v2Juy$F@ zBSajAz^d!GB;hD5^)DZi#5ICPmrW~VDQnHfS5Cc|jMZSJm`dJM~_|7K6_)Drc zg}m~Z!R@3yT{I+f8HK=RbUA7sU9ypB+Zp zmrB+N#~c_=eQ0GoZMG`ah#@Tu#dPwEASkaHOzSv`ek$@N-Hk`v(I)-UnBSlyN z24qy_sSH)hv1kp=WTnA(O76qnkVV;HF>&)K#$VDD zUL%E;936TkRst<@IVk~1Z+t+x7#D}oD&NZtYz-OW+{Kb+tU9e{CDx|4a>DaBD8@j~t8~y$G-y}TGs6dqn4=!T z9r}{mQ6nNMf~*<7O^iEVHOhK+_-%vdai78FoO2sy2BfgY=ey_!6B&1+*2|?~HRTk9#rejYQ%h=sQR%|DHVeCSuXYD3Ul**Ww-W*%5#)H=BP1HMiJLeN@bV#yfzzx# z0O!^b)P%fL4E`%emmxZY;kzK|L9jV*QJzKma86{$rPQKQ2Tvl3`h7j%)P@>%&%=|g zo5xT9PkRl{x#6_3YYkTOUz9dS@;^Ntu z`hkK!Su>i%7PRS0G%=(ycS6h+rDaSl4#dJQkz22?INk?C-P+}|+wrbn{7ya0esvfW zE^tL!G=9u_{&`5*DN^x1cp=hlswDKFasVtI-SYl1PH?pPpI7P+5#%HPU?T4mp3WEy z&A+E9Ykl~)UzGLd+nd0He4_iN{RTb}{EGmp zxzIa|un{>%(q+<8rZ82JFkqa5dO3{BF7#9+40rqyxn9`357jJ~9NSNaBPYl+6@AvM z1Rs<9j(oHkLn2~Mg2xslwh_Qu#qgvmg5k!BzbZt8BT|Am;&pTQ#|rlEVPP3_nvP)< z2TQDvasrN&qOi}y&C{Z+Eh2C|C<2NFpA3ewA)_p+c%i$Y@aAx@dDfpx5huD&o)Cw= zwTLN5i}CIX&TI*#sA390MnA+*dMI<|$;O!33DttR=18669@3%(L6NHGF|Xiin#h2h zn>RMUnV+3gDtkPNu44Qw9OX&OswEqXMz6#}fG-PiPNASLIPndX@eLgDtsL35%48YvT!{ z+$Vnj4A>zvP>oJkwUsi3fHRfcKb0~!^;kI-&D^8EO{LRkMu?@c z=%?Xurd=RGT)6Rz*2eJaG~QT{gH94RXS#=568FOd$b&y!?76XvTlzK6ClS~oPEq}-seen8nTm3;Lce! zY5xQt6j5&|1c?SOA|M{KID4-l4xqf6SdcLS6tWHu#f{gbO1DFRE>7`0o6;Swa-01V zYjJ@|GjL-yuE%<=@^j<65t8k7aPh-lToi7C1&Zi10)h-ByhTBLCX!msGtd8%tbl~@ z=Q;4}0x8f=bU&>L)FYigRzeiM4q7ZBP!-d~;mWYKeCx9gGM2W#Z7RG&L8F^M-`F(o zG*BliaWjGt5FYRgQK*!g=Uk2JIgquqnZC^d>Kh`NUysAsSG|))F&Z$(g%%W|q|vEG zM^v6u6aEfAgp;czWEQ6f1x=boH?*Mkqo6(}(84TH2+GE|2|a{CI5zJRYF}vFl+Hzs zuUMUQrk{G;RRHi4E|!BF%#4ls9}Sv;J%tFq;F$Fwz-l!FN-9bbsI>K2!bLKpE;Ded z8_~yg^l@;T41J9A;E)%>nMp@20B8_?S-@%0fU*Q6l*EF(v2Z;Gvc}U~A=Eis_Cy1V zaXxXC)gEPbD8Ba^<#V`|9yQPpP3Z#u@#t0`8r5jggnv0(xwAqDrGQ49mU3}|mS>6H z0Pz+n&j#Ic>_&4skr@`Jwii^4=NzDYVuIJzHjBiCAG!%ofOvon?1AF@H4Ao{fM(3% z7+w{94kg@P#i9QNewHWo%MF6mKtEf3vVrlh@iKk!N2MtITLi9gK*CEgQAACBA%JV4 z;ZnAWQ-PP`pwY0yRT3<1+@Mn8kRrZ+nr<9QxUo`<$xV1cj0ZBTa~R<6MM0|(h2!?T zIdN5s58=@36&!;*RH}iogLG@|Y7TyGJqHQFJ7h!HERNl*8P2MZJQrvQMihboS-_x^ zu;R?CX4ob44xt%w8h7NGuDn;(I9uGH+^%DYd$EpNlmbNrBtBWeDMdjuG>o%uai;8v zfYZ`2T%yO+@y5(xPU?1+{hHv=0-tpv2kMf)rycJ&K&_mFYr`GjKg}QSp!25%lJ>k> zah)PlEri>Jk9xELGu*dS#TNkXHC3{;N?Te)!u~6M@4S2uH+&P4lD(R=olFqSx?rcf zwuz(5EWbzQpwZefNwuca0@XI7RlY5%TW40_1mrk|qTeRMb+e9MBq(I6(+)5Td}snK z$`Vbj)&Qq9j`qCvSFOMR6oQ}dp}J2+LNh9!@GlG+osuyXOUUfd>Lp*&gMdb#R{Np~ zqckAl`0>X4x&fT^N6S5DRcQt_`A+*FQ=px>CT#)M;)23Io^6c$(>$mxl4n-n&?FnU z4q|X@__C!RV-{aA0d>P|TGD$r(+0LvDbLJ}UIfh(5xw*~~>^=>CIr*&@DMQYfT% z{exW!Rf}1#kHG?twz4M4D4*I|>DfcAKm-96Mje@kNyz3K2#(^_2~j4z3qDUJWw#5VCNAicg`FDH*P- z!gl~sd@LwvnB-(V&bSGL)DRvQ7;~NUIA6#0K)ln%1HLv@j529T4%XMM5WXWGTa}o= z*OgGE{q&D(PGBmFum*ntfA+jd+gBW1&^Igj7%%3u8h9`x0M6GE} zdUjAYH|KDpXo1e##i5Ck5PopcZ90+atOftOFV+qDVjUI;ux<)7B88^@O!r*}@SRz6+&>KH#T0V+8ft@dBdU8yKhtNC2JVEnH+yL+{o7u0e} zWO}eN82hzDts*}$xy3GfEg@-%FyXye{2Xtp=fhh3kEfXn-;zCzzFDf4{2=^(p_gex zoxDev`r~N@n|no}Bng*=TL|Sg2hkIm{Mn@Vg#kF*G2@Jrte0#O!LjL%DcN4q zhcLp0&o{cl>4}Fngd zpKAPkqq!v|wW;%ZGn8=?KD41~^Q&c!ou@EFTw@z%vBlWG{h|T=*^s*5cAoj=(Xb^S zLaNdk7Et)+rxr~A-pM^_(@SdCqkrcF3@AK|@Aw~M{mj^XnZuyf{OH#lK=%@cvrL+p z^yX%1H#ccF&qS!uWml5t~6j=q>2EruK|7ao0dp~rtt zgVhwbN`Jg5b^OcZcst~H{w0kRoKdRz7{B}QhZF!oocxwLxiUGq2|2kdJo(#ya{ry= zAN}b){YkCJNv-ZFw)zRU@$}5)l#t;>*Mgpy;f(az8Hwo`<)bsmo6{W`nr|;t=^rQ< z8`pOzScYSstV0t0==7K)?LfrL2^8JNW(V4XC*&Wkw zd4?qZ4mcTkxJ2_ z+OsRWlS7R+M}|MHOdhUWA6-5!x|%b&B0oOQa5 z#)z@S;%J}$H?h&=@6F?~$!z}rG<4FLUPK}sd%pZvM26sL27e?sC7)GFB9$-11>T0$OXH}fu<==$WQ!^<`exJT|9-L-Y>}zh1RKSJCOVpYieTjg4 zp;rV9w6PT-BXyn!4J(7gEFw=jW*r1&BOzDH)|hu+9#C5kq?|GS zPN3qnB7K z6$TTW$C#m$FhFr6{H2|F6y>X`jVKzM@r@Yz=;e)Qa%o6tEQe0^W-M37_+~u!=x#{@ z|BRhwqUe0p&qRss@t?_JI$CCtTlz{?I7)1>zta9|2KlApe??@TZ)NJ(#BOEjQ|G|Y zL&u2i94tY*ZGSUN#BiQd3tIJ>WJKBIJI~nftbqw^PrlNX?`>^_=!N9dQ#)Ye~xBNKYweRFSe^C6P z6D_nBe_B;>zfHG0rSf&{W+oXc*z1?Py36f+22H-$jFRL1?DCJiqt^P^Qsa)Ll8D5+ zec4^aEXh-?De;xIWar+!_MawAJ&)K`&iCGr5q6D+K~LPz)R?(N&!!oE{2d>EcEWu! zIrfngFxbT$c!u}*d-tUc)N1C_&mIDQp+CEpNp#Q=zPfV)fxfBE>GF**0Z)SSy z{nx!m5j2sx?<8|l5UMg!kbG0DtxonZ(iukeKMX+h>`-i|9O4`ppnWI|#g4YyfDri0 z$}ToN^`Dl(!=J+>xD>=@0M=>MG$4?TF*!gF4*UTI@ToQj*>0pEHu66yNW$fXSXq#s zZV(c3Sv)SfY5pxN6GO{e#^AUWQ zXq+cZnM@$<8GvA-Hvl3CLFbWN%bFILxzRKqcVJ$kWq5KhtHV4L)-{GSSV0xZ`gkRU zQwwd0rh<6^SR}nXKVySYc{_btG%#7?U8-tL;@72``!3nn&yodL%}H?(JkKJG-Im9j zNZ~p(r^uEMlNM}Nqb$@&^%P*{!)b{^=4htiHisQhdptzi88BvJ=7tk945?|zq%qp7 zGRx0a!#F}xa@L&KfgYJ>kdnjzSrT(8VvA9>s?RjKO=YtC{)FxQ4qTT4T6y4}T*n`#vu0R5V>6?Ycs46);eNqUO$pQaI z99@J~)sSUsxkg@(Qzl;O{;Z%+Dn4Aw~k>jzH5LU}mQk7smZfk6W z!((7(JSkN8^3=E5%IZQMM!+dnc{ib)rZZSk`=-uAHmrItondo4h-i3(*tyIj|F2dKeOp{(yd8~k z)AQ1EGd(QM7TI5YFoq_#5S21B=yq##7DtsX4Q zHuTL-p}>arXD{!*%YnpFP=sU$(?c?E`|F0YWahP>H6gcYN+Hfd&PE%!*|#sulg=wg z#iu8TL=z1|UgSXgl3f)noxT|#$1M3~J^gevYTN&*TB2ZW^;q;h74NuV_TSBbP4Use ziQjcg*`KV&dPWkveOi6Lflt_cCq6Y?^?Z0*XzCS+-iC7x!F{_7{uX%XLVx7T{Wn3w z)n9!tL@}~Nvf1hVWouiAcV=Viua32P+3di}J_h;@wf8$sT&Bmla(#PD&w>Z9>-~rS z80}U07R`%=+}M%>I~I^(?6uL;?85|BE)t`Dk<2;M)R5&LS+ zdm8V1|I1UQ@AK2|r%SE0Kcy;r9(Z!!9PPco-}?6EXg+!M=G5|cU`Ct&P4T3yTVT6CrFDp@@u75{12}f;pXrKcbApf=7ypM#zgssVPUj%!w3Qjxgzp zQp*Xq>CIV(9mUSfB|>X&x(nLtLp0@2QG& zO^tKUfDh@xi#TAk^0D~tgupCVcoZ5H3bJp~96%-z&Ed595s&$?S%kif2#trr6MG?~ zH|t<5O+ue0{O>p9TYhZC2-u!7iQTDOUlqwCQ9@QwgnAAfN1ymwnE|cO&GSFU41=bn zByb|*bAN#zc40p+68Q&{&}klP%7l+q@VnV(waQ5$Xc_Y{gd!K_IUxPm4sIc>DHxW< z8A}|6fQ3K6681TWarGI}F7+EY;4$MA1jF*U=81TZaXE`qA!10pRJ@R;G%RzlPg6Q6 zV|#(7o32xOi+37gWs|wZKJelQzK-)WJ&I2 z5QK&2{!Y+9>mj$4njA0>AlU(ts=pG>yPW1PhBVcWcR_)Ysd5sEk(oI#4rC^^OhRIH zHokf0Tg|xa68x5fpWnDcv9NSeFz`zJ`= z-R2MBl40i9Pnl~GR)~qT7fks(1%x@ymOC!9yoF&r4^(>lq*e69i#}^9^k)05lCSH= zgTCu8vBK?%0JiJ5`?-aOxP_!Kg(P-jLDK^$*LpaFMuNMEV7Up4w zGa86;8UR=@Honyo{<{(Z>QX`RQelHq(STBMyi%UY67%^|QM|He;((M&nWA`^LO@_A zJG)9;J}_IRdRO)mul!X{nf87erg^!3T=}b20fW_Ytg~{9$#Tp6a;r(0bY8_ZWr^ux zgn-HZ-F*HR)4bqDmdeb$< zd#~b^^ZdpS^0Kj#ak>h34v@|bjja72fM{pT+S0ewXM_F zUhmCRaIsKw<6haDrBVm5d|L&L1~Se`rAk8*de?xaM%S=@rk;OmJ3zJC|7uj&XR7gW zV$oP#V5d>^G{8x%>}Y+(=J_n-sms8A?EY$f4Pkqy^dSb9jxDpg4;50e8I}>niUIZ~ z5FUfjSNJWj=>2Ws0{FEB0W#le2lHZcw%Bh^Jv!ekt82JxR`jY+iTy+shiukjxAc4@ zFj(?vn5cw)ODK9XIJsf!g3Ux8hY(-$KuLGU&&z43H`AzLWJlCi(<4sjRY8MT0`kaY zvYp7bQHm{KE1xog+pJG3Lz{IPA|+1f&LH=mkiG?z%9sD)N2A74k$QHeEV!Nr3WgHS z=-dazxw!^qs$CmQyJWRZz~#d^FMJ-3FcSP`yYFx!(hMzL1PPVMrAVg?1T2Z7oE+v69ZJ5GYRG zXw*)WFwT2)K#?Q)64z4kybtO9X91z--sGT6lds@RXnok846jd7+*gKDFQrOKJ6jk! z3#s5Y#jVliMf3sfC{;#bfOFBQ#?;S6gk+RjeAggOmC5Zx(UW{^-ERPfDUze7sr{-? z7zWNN!auXp#9cW)bI9b@pkq39tt@$~QF4D;6gYh=SFq8w=NXRR3NXjhp7-D`kD03Z z+>$S4e?S4L1Z(7W3&Sy1Iry*-8npms>DY-g_NdPK65PYhBRG=OQA{7AZ zoKdH&x>=-ZCO2AW@c9uBcP7g)IZmyCk;5d7QmyeLG&dX7DDif6>CDg3%LVEj`mMbh zJl{c;^g?z+u;XU|zwyx1EDdS+2a^G%>Ng|@5vpx62B%&@LP~8TCfA&?jNYUV8bq%6 zgUYmLLPk$BHEygwzZf~#r#iuByeBIQDqFFtrQE(gRmbYs`2pgWs3OZ)7E~{TPWGBq zY9mr!mfXF1;%R{D)PA(;*9GLX{4xV0DewLONw?K)nG9RMheGLBZ=D%MssW-|XY(yS zZx2;$6>v0F%ci_8Zi^v&B5xy?#nN|)J%VpN6lST3bbPJU|1BvkJ8iGgj|G(81A~v7 zn}ENRT`4;|q~iHuP^9=OZ61P;(DA8COu^aHQ?w}0(9WzmlqDzC(a0L1#>zP#ZwK7e zqtJ{BD#_lj(mYxru9j#9`iv3ULA844w731?iibCmYT+;y5(K~5Ku*)rwF)et9$2k` zWDOWJ`d{yacZX9%e+9gB4G_&N4L45N4a@XQRqo$5%C-{811b!{+@oN|!8sq$0N_pqJ3?R2!q(p zJbJloK(>%&U%*RN&S8q#NY|7c^8r!UNAI=26;UE_tkh%;5cp1>Om2gSKH@k|jK-0$ zwHwyua~U51YpD^rDdI6=%UcvjG||r9=$AIwqxeGl54sO|LDOd}S?NYPs#50{(ePS@ zNWIhOnCKtFT%Q$)_XRZLmJ4-8F#n~iE>57;7iHbOVh}*BHl%DH6!idAaQzp}kvJHj~33hJFqwZxf{koas`2c}>3B`fQK&@VxF%95aqiz)Ki^IcCPZVFQ z5u~CDXXn%R=CURq?$}yA~&zS^@{6< z@OP(_=l6U^v{%xPX$W$4qwSp|t{;z=3tX|PjIYl`zQc5uKj!Ck^uBie6k}8OWc}Wc z8ycLbe*!42ZmInnKuN!@K~ZBY`9d)3g0_sEkh7cS@ZtH6;j5=VolEq8f}zuuJQ+CO zc*u*<%~u_gv}Y&@6V80Vax(7NUw}F81)&RXdRQ$H1xxzLX)!S{Z*SzC4k`sfC#DkCeshkyvtz!^DbS)BG8Rm@61CS2cO>NVbUBpkjB^WO%)u0!Aw!A zqH>vt*#k-WVt4-{M*$E~;(Mqn{jcsle?ec7v6d^ci=rGzCifJc0_o_7d(&e#J&(p_ zB%&w~Pb7p$f)e?ts{r@}c~VfJ{DW4;6yo115l~!7Z3JF=4yOnU_-0TI9I9wr6ZLQxVhYTQtr-+IAMkOXx*F z0s!=W4kUn$OW>a}rCAvMIO}CXr+d-x0Ej23WR23}Hcz6qA|V>b zxY!x}*()P<0njWx8wru_JPzIJbu!cq>L&$J=b<~fGA^kQJPBfsLKOg@BsaE`hOONG z58@W14IE3>2*#TNd1M18rLLzVxN~cMQL;Mq_m0IWQv2X9^;!7hb9zHB8tPhiX&to;fuvIt>P$| zl9;lh6Fw#JV}&QnN|F-JCoY!I7qiaFl%~q0rudX*`XptPmFA*P<}8*nO=I$9$_h;j z;cjK6rU?aQWff()A&X_KBV{m=i*;|(OMEUibY)#CyV#Uq zvdY4)%4Kw!&3Yy0z!>9sR{4rg)sRfp>XE9qT~%)ut3GyB9Fw{{5j_79&AaG`mE{tvV7dE*)Ncpt;($ zOyob09RIcH`H|o(q9ou%0Vn}k5(WEP(MettV9-q1)ixPO;pgR!(KSe6;ccS1-dyON z#4R?@4>8cgdHh&JDF z*o)@*_|pRj9Pf4%ifc(Q`;Ln7cb%cO zH+&^?RS8{zca9+iq8>IK+U{LAs2Ov}MxPoEX;1>Ma_Z^v^2a@(_LQ57r>Rj;Mxz! z!0qIHhiV2fcQn`9!bF}|FN?~DPFBO|fsV;aeEXf(3`y^#h)G%IZzr{~gBL%>2RDc=XEaEYcO1Y%u)I^Uq>%cdUzl%nxM-KXCC}zi8 zbkVxb1!<~#zV5>s*p=+V>b5OVU?#6JUm&D|Y4rSEpTl0*n7thZ5RS)KD+mYtB8B`P zh`n@IoLj}S(Ul`xzakGy(m#SGU*2; z+~v)5@K~C%kgsmS@sQ4QdX{%mWoDk&rOK+_qR6~+wm65j>|D-bU)cw^cTS3$Y*QIG z>9|)vIVN8Hph_?%CJP8aSX#wQfEkRK=&4;t#dx6FZBZA1P$m&Vh0#6ifV!9#%ocXs zI$%-hy!}-lUR|;gLVYI$NUsmS;iL|+cJtIoEijKF>sHJB+Sh&dK3eE|;<`_h5^~KI@W@GLFE>2@^7N!zo?l5Y))+>LR z!UQtna41RHI;dTy&tGm(>u|-SA9zN5>;Vrcw%4&Cc=5Q(ow#Qv z_i(0$A!xBUqcMt4ay{}KY3qlCpUp$aD)?S^v(%v!tE!y`m8aEW;8Pb>UNvdoa@Sa> z`q7}|=JoykC|=zkaqQ~K5T-f4>GvP|#u&-&05Jx7AV5pYCQpBiDn=~w2<0HTj1BvajG&*Jf=7^*^$S{YTW6HMls5A`*y%s;_x^Z+%=V7v(Ku zWP>EJA6ii@-ChzLZ$n5*PVfXmzm-xdlW-=mZ$%{60v|lhbX{B7=U{l9Yn^3#CS=9l zGOo4X!|K6;s7x_~G&P~4*Vt?PM*^b5b5P&}I)^|O~$HJe2Qx|bSY z=X?Bz+i;GvUn`MRb_>~0*uJj}B-&;=b*2m1ND7H!FDZpciY~m>LW`BQ;2)GxJ(I(x$YJhtYz zOm0_;D^;?I`ot_a+^wJ~(&bya3%y=%`t-%UrkzgT`$E2mtZdoKd@1G5_|tXR&0?Km zOl1JJ)Msf@#>_s5d|W&Lff-RCY0|~g5QJO=laq~(;8{V%yFIMnvbm0d|2aqg*9A{g z5EbG-qViJk{F+v5V&C8Enz#V&X~RGW{m;e%pX*3?x-*}+*34;WR&q#I)ZW+o@VSjs zfyVwbxU8E)LnVYmdn&qG)W%9Qoa-tw30thocR3>@qPKcsC1Jj;z(Zx&o^-377v8nc z`S<2HZAU0HiawpXMvD36d%ijnd&0xn|FQJ+!0kj{qX+cxy?}*WWh(caqg$W_aQ3Bf z1)IM9(=5z-Z?`-anB8tnODnWTN37To4(eeinfV${(eVm8IRX{ZC~nI9=8PT zj6PgC!H)YNB%O?W%4T#7JR08qpXgKr!JEtd`+NL*MW^-((z|~%qN_Q{ur;R&O~GoB zA*5vAn~^U_@9OFYB{fV#hq45WXlWvO~l4b@dg>F)LBm?DIWc~GH+pnMh zva%qmVjn~G202JEJ<#SzG!W?yDmxi{_pMzHO*K`e+3g``(VN7qYk5@%z_N6t~tP zjQNcI?Hv+j#M27+mHr9cuYq0QwEXVJtWK8;qy8Us@qhhf{_6!Sun*9Kn*D2&DlT39 zU(1gE#~AouWk-$vW1nC2m5BKM0~9+|Zt}M=aLW||C^ker?3s>#r?=n@1IAnb;motU za(A2dEVKkz{aHO?lUCw6kged{-n7^fHdD0|aJg_nVXMAv{94ceraS!0-(^QPpWdZc z`evSYzEFTT=$s^n9GUJsz87?^a_PGDa-wuhojrJLxjS}>YRe>-`skX?7Sl&3yW8G9 zWFMLcEq%rjK2|!;Wla;oXECR8Y1&|r9Rep8s&nvOZ`YUCW@4(D)j|aY5<2om#3t>D z9BI5Rd2`F&JH0=@tV#`sT^nSiqJ;3`_a0Cg{R(fs2%LHDZZ3XEGi8vifVc-w$S(l_ z82r!nRbC3geso_FcgSaSWNOoFVZQvi$`|^lHkQQ&6jGuc$ z0jL?KNe$pQUz45|f5xs6b)f_0+rnfZFb&)a9=J>9ul5Vwtpf%{9WV?uwCg;GI8#%8 zgDfkZs0oY171U0V#w;jPXFxxwGH7)x)t>;cF@~&ONb+rA02ph^1a*eA)fTW?#13Av z3ki@WKqk<0ScWuUn=+vXQ2BHr@OmT~cf7BT`~W%@J&=eL-n1Pm0g?Laywnl1Yrq`9 zh9XG2%=$6`)mSD7k{a{?-8u>Z&_~7CVck-@Kiy_JA0xahc94zLwgcFck{5p@bUXle zo(_XU^^_<=zU38PwcCE2A#{Up^to^;9u*~Rh_bbNFAs1t#IkEPP(Ztbzy;FINSF@A z+df4AhNDbt420!+=8HA}{P+d?Hr7nuh8lFR@{Ney#Y;(8VTNdw~wR z0D18MApQv;3+*FjrjD|9U`+aS03Jt=%E4oRin1d0OH?sERaC3V zo-A8{WRQNQCO}k?n(4j_M3Fd4;=Y}T7t>*J=;~y+{b44S48UI124Lig=BU>5XDkw( zhCZU`;s8fdETUQ|gqpLXjuiwRInd1A4z=NdQrW1bONw06_uoDdu_S=NC z13!alP^3E@dM(UGbo58-*Qub>S`;gQ0sy*ApUKw*=oAIW3~h}oAi zZf>YcL>)nb_yqvh?AC&LP@t6~49YM8m?%Pr@?1!V0&E|Ov4o&l0JM)|;7UA4o#o-2 zlITX+otxlA503rbuu8m~26IxPE(0`>vR2u_@M1rQ{8Dw0{)GmFY^fD?MjB>wT7F~ zfZaQ3$(i0=c!Lg!d6&4KfQk=b94BM9K(fRauVT#Dy>_ z6sAk4T>Gf=X|k2kDA06(r8V0J!@u}r>>DTAQq0eTNcRm(Io zT16aafE#529ph`4s^umaBu$+FP>Sr6ckXi_+vHG&m^WA8gRw+i+EJK3aH>(=`wKpv z>={L4UsR{Mk0jBfOKX$xM@;VLGm4|m^*!^lzgUvp{`YX=E>+_ID{zlgdqfzCY+rF0UEn<(Ham3AGx_`R9fC~wuYH7~myRVKkft9;jo^^! z7MMR9bDD(M8H0PeE&7vzJAob#WF$SVF~36CbJ`k^e(9=R6u9@B<0mBuI|ijE3dw-` zds7L?Mc%j$0|fvTMKvobg3Vq|ClYoVs|RyCGLjZDsE{pNkiJRoI>r~!=Iq3eP~ZXw zI8G66+Tzoay)d?Bmrb5^xU_F+o)l`tUq zaO`Q(#7vGEm5z-hhM1DEFAkw@(4dAbvNtFmyKS-VY*+yg^ZJG2uUjc1G_VK&oTx!{ z4uL!1z)MZ2)i=O|gqsG;pZ3R}V8Wcq@H!53+6;y;m`euFN2F7+cEk{Xh5|M@@xEz0oN1&6 zChXuEz)|xVHQN4l)nib_Y8xMQjcayhy^yk)p^)LGxU&%hmwStk|kz z30dn@d=nXZx1Ml@YkgjcP{9d6meQ}4f_g+D5hIsg5eSTj{y|Qv9Ne~hR;Ydz+eJ!3 zWirxNKn_KCMO^z3S^z38K2k?6-BZafdx>vpZaQYsCRSTw!DNur$JrS3GG~u9UL1|KCX>> z7F$HHD~f>j!4)Noesx`vc^GY60~!&H+msbfiYT6(@g0~m#*@rtNPco0RSBAoRU!Fp zFhrU|tO)_ILP@{egD(r5g}ex2oO%@!v_%z)pgIUsES+z$_V2b-9NzC_bJ38M zfPkDLu)zE}YP{`5QpY~oP)o!n>r}Y4S9V8&;=Dy>H8nw1AlKT~nL>RYSRVYf6iXh)CAYC5QDcC@RX4$_|nx3FxzZvDD8*S_^O z=IXaNLief4aFqVAFF~TkPmEfL2-N4*QlB1A4ouN!>`OGGK94w zI>gsYl`a&1}rMlx8*Kc)ZlvmP?q_WLiu`{#0GrOl#jV`=K7tX_Wtr5Xo zzpmoMuF~?Zi#=TxOI=kPT`alonw-uU^X|)u-3{g4jpf}+K-W4=_(r1e79Ql9Ur&2t zPiJ{gcTZ1mPEX7R#Egpr*D!^CUAi1FK`slRz?I28xy~4`tX?%PM1j^j^3Fq%3=Zqu zK6$No@?G!kO}RV0?;tlfI(@KRip)DnOZ6lGdeR)Up+G+#?byPFd~m+Ijeq%rAB?AS z=g-DnK%N6ya4tD_04yvR2#@AMiZ&oD0QgG|gifE%-GHbt?*M$8FGoQWS^yM+Q{i%i z<@>~%Ah4wV8s|GN_;3;#Nao_#S$9rtK(??E*8sF3aK{3$_~O^0D<(v+xUCDV0;lh4 zCJj1P4DRk7yz1O>8Ugz&7@S)Im5HD(8&o5ADN=9il0ilC?WrDc-g&?;rdOFf(1L}T zhjzS~7@9eH+b?%$#|C5s3k~oGrTr z67H`~2;y`SUObz*gZMpj6n&#_)QN`Q|V|odn8*hG%G5BqIDE zA9jp2GMGX4Muyvq}c>*55q$?$oE07BCQ0C*T1ZLX|m}rAx4VJnwM5SC2L8@*!xi!rcBy(Bt$RZRbqq2E@gk zVxK#56Wg^yLe{bHGN(Hf1p6GakvH+a0Ms5c@c`O~Qqmo|LB@XcgeC8MR2T5*^65@< z$t*V^Sh#-&D1xv4g895O6do|B#)mKPk!0qb4>_|56Oc;P`v6TCx&UdSg#{0QBvROR z+K3t%ocDkS-Zp<=e*XgieB$*9JoD8lAZL@0`O5|UVPaXAzSKRn6f4Ay$1cBB*f}T! z89uiRZ(CmCE?+s<4RB|n)8Hu`@P;$Oq@XQ-YFJHBKR`R*|JeBiVM2)js&XK@Cs2=^ zZyx|WPtb6=w1pqHpUFRYHsCU##}xtq*!a1TnT~8}3aCOujB|zF(uD8O`yR88MCyVH ztlmQZv27BA(h~3+LVyWnR|N~gRhZMIKylj$fkddf{#;<><1#MHmH7C}a*1QWQU!IW zY<9;se4k&$3zIV)itHDyOD}dQu9P~hq@JU%|z$`Uqlf?<$0cli-q$_39e8iJ@xZI5k8j!f?-W@@FXi7{dw!<-&vXys03PZ2#|RL)0$a6Qevqr9&<^B&;v2be;GMA4r5e+ZCsXlj@WJn)cRL4NjLDo~Cr3&9~nfSK6GFrit<+Yp>yj}J^#*5RnpzGn@<#2P=FuI z8A3Lk*;w9u`qz{EH}R8(dF-W`YftM@k97~>Kk=;{I3NdWED}5$y8(N2AbDJeFyD*R zomm5|&;Vr6HiHIOv{G7y$T{l369@pf>=zM6Dp?2jSs{U4diI5y288GBegxN2zP(dw zhPCvrh$iG34#(W<8<4v8Oc_W5zLx@oSITM(n2@sjD7dokvTLPfnyklL_ePKF2ikm_ zgRm)ztWz8Zq21}q*_@#bUiARl7pUUu_Pq!)%5`=EXdcP7NL7FqP&iW!WqA;U-3Bju zuLTXCQ`nU*@AEl$yh!ihaD|TnT~smV26>q=U=5JHGd0i8+q{v~rLx!g40z6imQC}K z0}xp{8qx)60>D9?V?>fC&cE*`6)VC{gdRDaa>5aEH%DFy2>um0$8n8wJWw-~KCc|q zLIr};j(+UQdH=CezLP(@g)ZlCqu1_e{l&jFZ@OH|HcP>5NqQcwVFkTy_>A!*l%k!A z4D}95R~9tTH;dZR0}-VA4WurS(o;uDreIn`oO_d1ACdnbP$!*DmbRtgriQVOsRd&AC1`Cfvcmr}P5nGE4l#=IuYU;6kmN zt%kEMNguObb9S$-QE%eSEJW)>%u1~gKxo*s4wFjQHzQ-MR#Zc<_m%)e{UcgE{i24p zdj*_?Q@XCWoD;7rO5QHMQ17V>@eV05oWBaWHZJZ>t_(P`aPNYi6710R*lgG_l>p<$ z!E zp`FhTWW<;}AGHhvvq`$`ojThN_OCxDg|F_VW+}ClEGYf7ler{mtJoD%axmTW)%lKs zu2%>1EnFuh>ttt*CB55!HeOhRAAOpL^Osp=m4tR5xpJurLq}Y`+?^19?dGuA(d!+r zx{uzxi!hI9ZoZQV0Vd<9?^+%jCq{HUO*j9@mKo*IrSJ`MQC&Y?^+es>L|D-JkQ%+T z0bvJ=wVNk{dZYhoSEq5M_xQxt5sMR3J6`vmxW6l78En)cD#Xm}b=Vm@=XLmY?8Ac@ zJL47){}80ilzzhC0*5a^_rJ;%I6=LDC_oU%6uiG{X}Bz_bezF~CQ4u+%Z4GO9sH~P zWBFDclp>~(sAR97Nc^k0#Vf?lCPU1U8uakyrCn$BE`8uGkg+>Y>7B@)Etn1jHBC;u zYQ2(?HUP)5yu}_pxOCg@*fPqWZhKG4+r_VVX4}hL4oXBi$v_|~-zM+&H7YY;au%T0 zZ~By5`mLaVAeBtpSOIj8o_#Z2*3bXwb>~c=Om%JKw1`By@Y$=)kmAOn+2`(V3}Qd$ z_Q9$M)|U@*J^qZ}6*A9wUqGm|^dRXtXEaAj`tzwcR67I$qESQ|_mMyW{Qn<~|2j-t zA#uPJ2=!lTj=Up*oGQ@AB>z7-3;)182I;Ob>c)hX|A(_6Xd*|mQm4vy9Qn7JlVUvR zG<%s_>sX*2FkX0hN?0Y7Q`(nocki-yOZemQ?OIM^>7Gipv50iHbTyy>!fUvU%}5~^rH*m%@TbaqLc$s!k1$o7KYG`sWGRzODoo~INAwYJ zPeGbT!C=1+;DU82I(6%BHOK2CNm-ld6>L-&5cUX`;RIAV> zt@FcEGqzIx?dz)1@2Y!F3M<$jJ&2hJFsAVu69&`Dajo6Jxsw6gjOF@GVQ4!C?#oz!%-fID8 z;m$vr$nS+8z25nx@#u}-k8l6MS%_c{;*UlMs0Y^~ZcXZMTssHfx1s z;8dw*vPZNQylvD#p_W`CDU(o-xFqVtH5}+QMD9Mu3>}kSHokVVW#jwAr@Ma;I6eoI za^d$)T2EZEed^@+3}+~Q9>lH30uUTfckN@UVZ*~Up{D0Mm?&Ws5jtpxn(a&6M%LZZ zPm486)21)iF!$HFxnlF`P#iI{kx@r-S$sp5J~Wx!eLb7p+#z$HX+8Yq z9KAW-^yKX?4-aGreP0MFnL2tu)3|O6aO1{1?WODekK31yzwSO3PdTX#o(~l?k$-=B z28mziCI9F&wh7yKL`O*IJ~4Tb=YapYlJBM8^|J8bjf7Vfhd%y%b?GGj*J@3P;;%P# zwZ~4qZMylf`z^aeapT>shkG_Y6hU*^D?XpjxO%<)zJ3ya@Wp}O{9%p!-=9Zz-0b}_ zxohj`uU${GjcriDH&1_u#(etg2QOpmpY@fJs6RhfuiX6e>wU+kKO6j!t((8UK8)J+ z8y9@(?)QbLyMF;z0vQ77$N^>fbd(DVlp5tA%=ipKE(@mN*oX1uCreMV5NamCX5>wx z;_piYd&hp!i~LkgmuigHXuo7PKaG@IjXUf(Ap3})ZZcVoKRIe68%IiAR6!9oyB-cG z%dTZQy3~l4j1H=sxn=Ew)etgF=o-Fj+1`^ik{zQ%`Zq|~N)^h4YpX+s7uRybTxw-6 zq3nh6!I`%HweqhWN6a3r9{)Lp@p3$nAH4W`8s8(u~GYr%}g7M z73q!D(cQkEFO)7<|4{B4aZ)!dVBzXD?Yf+_ls^~Ly3}iX{T$iXKV4ux%fKgbQ&cRJ zP!7Br-N;32pO2qWocHy3x(rNA*@|F2s)j!6Gb!?xgHXZo#0tBtZ6^mrJyu^5l8@LN z#EX^Ax+`rvmo-Vtn#R7ir-aH+ZVY`rK@%{X!a7a9((#sY! zHgZc-WOEU54a1gS*Yd0>)oI2JuwC7KFfny&#bYe%ZE1w*EYFzKBc&sj-`Dcb5(?9H zIzo-btq@z-B&1_JQZ9Zg@}TMZRdmYu ziL9sBt{^{U*~o?UDZC}8%43v-c3AXP?##SG2)=qxG4&hDX8rQEjGw7(jWflFzv^`_ z@jc`SR*DPaM=_BkjDJ!!wuhIoC7rm(yy1oX+l6#-dUonD%@p+bEF)0lnzv|rjIgj! z@&UJX7r9jy##7o_%wj2(SlWi(E8S0ce^J<3z8bw;7($>f!9+KW`|3L+`onCVd2uks zY^}ogfnq%iB9BLM3VWK-k?iLp zXIlp~_81h|M7(@;XFV0F&u66l&N>khD3GtycZ~8MtEPKx_AaYz#b?p;LfMP0mcZrh zR?pHLN1@_j_@P~A7^(V$UKmquni(}GIXof-YfKopbeo#7E-DE>!pktTKA#!iYlU=V zozT6^Pkod}>S&0&BK+A$*rY*7jhw>8h#~<=emOV5_ zn(+tCnS>cn)gZ+p6x{L;^QSt0=ljl)-j&FM8%ysjfAl`R{V7HG_cOV>KSrg_d_Jh~ z`TXnVDvg`Z8ejKeieG>4e9Ij&nleu;FMyy;SJO9*h&jn8ekWtI$PUuMXN1la##FDZ zYh3>M45hHb!bE<6V7MaK;!A$-#?_r|d1!$JU>lq+;uZIp?0u^hyTCrvO%n28xnNNK zwINW*Y{U~1V{=EskC(*f%D14X$lX~p~^`;|N z-9LIV4%I{PD2AvbgVsU65*j1Z5c>Z08SFRVH5S|;7Q4F$bqk5?N~3!=q_n1{c`Y#f zHKYAj(|o1V1LFM-I;IDq()|};QHaCS4mM`w!*Sokf7jz6gQscK6VXh8cSi6#qzNsN;GuS24jh;!4Jok6JGA)_7IPULOmUfXNb-?_#d!!%QKJWb?4do3vj+A% zdr*I|g{zFCE}{HGUk2tJjx9nRO$j^f$~v1|k};|VSI>;Ev2&)O;%!Kn*L;LK5IJ&X zPg!TyRnNq#u((vUY^(?M@;ahnG*_iH8!?xi;+@%H=Y`ZbW1j)`P=uqYfgTITRz0JO zMo+#h&0P)4`xHuf7oWGbp7&ui?~8QOkA^&_S9zgr>CflVx79&k6$!g9KyMkr_K}1h z11{UVP9*<0{md)gnicpNK(A3yD;n4}0>YZ;J5!fg_6n)~HU0Nt_`A`Qq8iS*_OOd# zo{b^M9!|i8hv#j`M^i(ReK+}VUls!M2JUEIV4M)UXDIm@kG2t(_3L#+fn&}$GJ>Uk zW+yY}Ck<^$^!=rQ&DC(80q~>haSH3s3-cG;OkpIg0>#U|R#^pRV+D_S1^Q{lw%+G# z5`^p$j>;{bk4X#b;Nd$P7&k`qyE_scvMx+Y#U)=&I-YQ0k4GtEthDcBY5JSeRCKAf z=5f`L^y8j39chtkT*@&zY7RgZMnn){_n} z9tn4tUNP=dH1)G$Itw=AQ+ekyG_|O5cCd0Euac)#wc>N4OcEbXM~o9ujqn(xCpvsb z4znyMG&B83XNANjHwvWUKqf>dw zWOudAZ}@3R%qIcARO?J*+Nt!Sx^X^ClL{@S*L~(=B0a3vOWluk3)4=yH`-l^!!(F~ z7fv*b+MW=1Hv7tTvxc;8;S686cVqo$u22ep&(l}oS;lyRT{PE(3tn4QJ@urFF z{3*=!`;GZCnEdJ8*XQ3h&A$ya^*tVK@3d{@nEeQA9qD4P5jUKjWlT8XAwyORj`1MD zKV>sq=na+idxo_W?yEW*Xq04_-q>UBRgGzSr+wwcTlbgRsgPg_(%gC->G%2(R9N75 zu_MZu4qj1f?#>R}>gfF>B(=TJ^;!tjop9^7RtTWO7KlvzaCTK1d!~*(@`!ECXFu6Q zxQhCP?+JReyCn2=>!YIm*GDW_EBSLubWzXcsvzpOu+9u|+R zJFkTEzFuh&_x!oTYgR2*E`%B35&Zz}roG{-TJm? zTX)Z2j(ayt%Sf#?+N;*-*V+n3dS4&0ZY#I$DC*Tztr=PBJv5#*-WfgNciZTjb>ODM zZFQsDlIj9k#Cl$*@zCquOqt#=={wWfwTt1ckKXk>^1Zu5JO5#K&v;xL_i*p{yFBi% zXn8LVEQ#~+d-iv1bh>l&yNNp*<)xZFHT*;lDwDIZdQ&U-oK(gI-cqly|84mlec|JG zU$3_={JOJGuB=e2$0es|96?^v-a!@U|RN>^H z%#I51ca4SrUDw>fJ?{q$VMEPJ1J+J=O(%PF-j>Qr-R9)<^k8d!fA{<}kK3NKyP?$@ z`cM-DF7{c8?i&kW(XJ!Ff}9z1BbfS7K@Q*zF~Aj_q<@ zr0&Q``BKx0CT7!MQLms@K5g>Roz&dcPTi57io`<}gQd9fLZ3m>@1bpFlanrOW0PZ5 zg~OVuBck#H6!U>|NmEyQhq_1dQht}V_z(Vc90!~7zb>>s(;fS!+4IVO{HjIG&8CSO z|9dMW=yA%^f>8s)(E4xBS4t=i$!N^9=bh>B@&K{*&LzCpCo@3@!5en;ym}%&|}B zRVoZV#?4}T#}I$rE!At3y8TGswXO2;vR3=Bi}S45?RosU*{-IgH~zKvb}o*eo1EMf znr6AqhwBYT_1-hAe9%-m9dvr>$+@X_0gGnY!!s36ZbvRO=%qj2IeSN8`KiU+^65E? z$8+5Zi&y@df!~?=_P-c=&!{HCcW-xqkc1WjD7_1aCAed|FN!GAAr$E)KmwtM zA{`99NCyEaO7FdwfHdhHL==(3{_nl^IUnA4t@CZxnol!p=2_2k-}iO>SSF96M$jzX zP3DV3q!V+R?dMu^py5&IP4buH>&2ZiAazlrWhJrn+Z5mE7nU(H|E>-4mB%cr3!1BP zT7%D4nAA#)w>kzU=9!Yh9rc_h$AW@6Hs z7jk=G;gx^xJI80;WUH3aP4=**kLJt9l9OF2Gn3c;ny8;kll~*}2*`}PUX|o}YYU!$ zVx3^AhvTYAGHd%Reb6TB`)enxDvr!z2R5QKFDSjxB-NbcKf2twUdgXvf_v6cLas!* z8R)-MP0`t*vPx`)Hd zac14s?gwgV2i^K4Sw3WSD4k`UJ>sdi9|S4aEh;TXk1lbC#a3_3*(r#plZM_BZGMI% zPJh@X->1o6ea^G&EB!KYeRH9yz#IYFyvFIHapbN#Z%ki~Gwct(C^8 zxZ`c3bsk;A)|WkSU|3^o5VI9T?c3Q@iia=KLTDSw`Cv1Q}5; zWju~(CF*PwPN{cTr`lwCq60NqCi#nl4u(_Qgg$!6!n9P0p=gSe<@1t@ldP9BZ=KIQ zKAvk~1EvL_Cr4y2WM5^mLp}=_vA?G{LBQ4lFD!%HfY=5Sdw<}Zz4QkTqSX> z!PiJ$BQ3xzj`sTW)z4E42ymRIew%~X_Y6MXsUm;V_#9lQA6fXoA+O{2h;A=K(k;l9 z{Y%~9chvxsy4gyqzC~&8Z>7Rxx;njbXj++-JC7CBMQs&AQSzb~@;JBtf-N|aU1Y7T z79Z;aqna=n=S*|lSWst1bp+TSpSp>OqIjB@r2VM~j;6Q$b6)JG*A+^Sa2nC&Oh7m; z)Vn-fo$Q+^6mWQ!g~Q&CiHhZs_rs|sJbW=Il?CspvDD#-c>0%%;yA81la?hk7Aj{; zv{1+Qq6BnIMVkJ|^Urkwx;UpJ=DF=uMt^BB-0mop#9x*L>jw~S3}wnVm;1?1uIfZ9 zGyvFlZdMBhSv+{BUuU_#%9|a6D zSjBq{j|TC%3v;Yt?&ge_hb{Y!wt+c4Y#}iz^zs-UmQb-(XhCDODy?g8WiB>Cn%qTk zZ9L^JtN%KK6?>}W-YA%5@3cIeb^4MxT;Sj7JqYK?7+2?=;N_@~hFA=WO#>ws-3Zfd zP)-ZVqVLM&Nns~Ux6Nzl%6yz(?YV^DByEobD@k;iJ$ex5hfE@znzl@5>d!`5MJkXasJR9JPD2BT67V zR<>a|X@q+Y@Q)tF1)ARO460$~=c$`)0smYSA#BQXkVKx&E!d|NMTe66dt6a)o}=pf zHb}zw5P^lwymS)DRlJ$%{H_o3#qeR?l})-+o(*A@Z*M~p>mzJsTSivs%^HzSyG|%H z?dPME$)5rjWajGBDTv_k!8}eHBoD4LbJ8Bz7)B5yM@j2Ogti?1L z^K$TWR^^7DGK0&-QVBZ?de~%&Auu-AN<$1s)Zk`3yGX}|B8PhlnE76oSN}p!xh|M0 zz>?v|b;jeON`h|lqqw&UJrc^hjV`ep2XqqoLSc$bIy&9V_e$1hyCOK{RATO_mI^)* zy4YUFo$i78WsC9)=I!_d{-|X7$ri85O;#2geNWVoJl2m{9I)_U7+ zY-rRuB{n6Mor4;`SMGB9-NNCJ_9w!7KLkp?3myl~xUZ=GN=1&!~2=B=>3>N0pE!)kWP~|;en=DkUZLqh`ski8nC4)%lwCwt zUNXj-#*dfM`gEM&**n)bPtYlO$zgI-xDnbTf_o@(D!>Wfmp_J*kI~}sB zXz2?E>ftI%{{|(t-(Dd%<+{$)3trh$&Jdxy?kud_r|*7RyyVH(h2wN{co5gs{hp{% zZvI=kX6+0X+U^Ll_wFO|Q&<(LcEK8H!Z3M}B5uvv)~-Ok4(6dEs5+d3QeABLt?O=( zK$e(H=W+;@eIMikRT;@ajf%>-byqx27Ue0N8x}a1tNF5+{LQ~!#djbIQtCLJ!mT{U ziMP*rUAucPxf0$iXfD2XA`BDFba4GX$$tO64_1!)k!d51;o;XONsf9Nf+}PWYxy_~yN4hOiL&uCQE^xD-?! zPpal8OcZu8kLE0qEnz<2AW=CAr~Qf}exjMnWP;Ur^=ZuD>f~8^mvQ= z(FZzeS6tsmTRGMw*_-&+jr8q3fKVhJs*w zKUlr7!6Zd$Aeq0&c(^}^t<7sa#>k4e1II;mf>c~fp-p!~^%9Gbg=~S1dK|OX97V9` zW_Q#=SL1u0ul82p$GoVlKklZXgGSoiJdb7P0lisS6cedX^xv#PNz7;%PYJHIRCv@{ z^`=YkNVv9i`wgAFk;3E3%Ut2DkY^P_s`_=u#4^1r%9zfL`}k`du_^_j|8pd>g--4r zF8Vqbj+4IjbCoxIroSuXp-N9iam3HJ6sZ11E#A?6lpa)MT_R2&9GQ;pC?NDl8MRKCJ(KC#4kr_yzAW=9A8TBK^7<_Z;+Fb@L0r|al=NzUYwYO-(7#Ikrn2)CPK* zk;`HRO^8o*n4Z9aNTz1NP6m4@E?^hmzWVkEK8ztrumPK!;rr@ZOgwDQvy*nN-$~8G1fqMp^WCp; zCaoXHPkw@E?1(cR>-vvMGDC%eKxT32z;|Q`xdfCAe)>b@rX%hDYVsb|oGPGy577n6 zvnTz#xa_<<)nNEFM9EA|vU2ADfM@{XX;^Ie=(mgeP-~aM6Sun`$D)cVWjxZDX-Q?S z6266a6`$Op12xOQ#>8XfSnlBn2gX`AnMzjD1$}p=aC|Y@X`(Jc@I%uAtD8=b-|amG zu6?3p<_9=N#cH+;xz!FiMo>E~*H@;qHjZ2En?!lsn)2*s?S{uBTwd9HYLA&D+e!S| zFMU6-J-oY7(Qw~hR=Q;Jzxqqa+tOW8v5qoHtH!fDsrNoC73Wm^>7dcDiJ zSy^7QLlIw3L`s$xzSr(&;VqOvTr!kfuTVMS&9LYu$4%JuWwjyZz77bw+;TfGwQZBfj<+9*Ye^jrUNMwh{9c#McJEq~{D)H2k0AA&zpC1L9rram zJl2(6KuZ3#%KjOhbj@lR@tsDUU6Ou^#rU>T$uAkVzP_03c9)b(W>z^SlP*H_WQ^0N z_`v|Inq!+FB2PWwv09Nko9|wCkfd__nflpU=htSH;6aThvw?Q5L4Uj|0;FMuYNLzl zf8!vZso9gir%?O1Kd-b~i@Z;Tybn1!81Yu7nY_2nU8UX~*1(l#Lf+q|IXJMVHtg4* zC)qxv*z@i|zbA8lE0;zcvj!K@;B}*9|4eg#fbh`Lpi)$=>ba?E4NA*ia-ghJb^A<9 zH%}oiPi84kbKbA-N9)aiA=mQmP~KBj`M3S6o!X0v>N8Q=Kg`rh^F&8VwZ}Sp9yDub z3HSSD3>y7aT4Gkr@9cA}?f>&vJLD_$z3VFDhr&YDv9SC9wMT52g9j?Adq8u^F@ctFzG_^3l># z^(xKY@3*ucMh%T;Jfq1M{1`mYkT?);rr~mHU>UDV`@V03e5mZ!=;ow$;)7n!E{)iz z;rnH}f$PuMrxb{}pW|zL|Gpi)CK|d4RT?Ds*I~%-4(jZtkJde$OybfX{}>-5{c}Qw zcvANEq#XC8{F6xqrAbBoNhPaE<@b{+=t>Ax?H_vD`I9=g zr*yfeogA&TcCY@c+tb=V z^vzkO*L$bz!Y+%=Hw3du{5)G&W*pr$pFuoVn%T1dD z_&!I|ZhqtbF8tsWe&~nUx6k;>ef;R{#WC*1ajTdSE3*mx#VM=B=^@ieCG(jNi*xyl z^O^dyU5mM&7Z-mlE@|P3@mk}^|BrCx|2i`Cf4w0|5Cg>hPg?FAlv%a%h77+^wEQ1t ziNvUoDgd*>{{~W&2>+&9|DQmLnt~w|zw`gh5Rso~|D;2Y98O(kHQTs-EUGD}f^2vyK&(J=K6%3PU1 zFsuM~7YL^9$uc*!$Vs|tG#xcn-%*!Wz1EUgLg8RBN3Z6v)-nR{;$ z9IQtq8alHMYSMARl?)AI0*3k{}b_@Nf>@#e}P8hl< zmaI-*6}pd-;oYD6i>gAct-^yS#Ml0v@4u?gu)3Gts23lbzDal#$wtiBYrtp3-TR^fBN7o*#`ZZ}xBSsn!6#+98L%>r$=r)f0O;Tf z4P^w0`XXN5dWaVkp;U=-Gp6<2(e7rl<{N2tnTKdU`Ec+&wr!#u)C#Z~KYb<$44}L1 zLZTwIqyoI6M%e8i)DJP*{Z-CSs6|o8J`HdW>gES-l0)(V_Yh^y1=VZc{ckXDa-?M9 zh3U4QU;f%<)P6r=I+R z{zbf@PwAKVciBw{D;vcZa9dT6!n|CES)HysMxk}zBNQ- zJ0^VVF0F9}k?zD+s0paysWAPB@48s0Nhc!OVU7$q7R+E76pF6Fkqdfl(}@#uh&F!d ze{^;EU7p@6iI5cmBQe7 z`_~oaL8c%8dmG~N2sVG;ilf<}4wOTNN5D89`t*nZyzpB;s$%%R ztjV6(V5MG?z2vZ*0~4@^3b?<<_N?;>|_dria?wi762BslZ7I0Wor22HN=_LSk?4$jckb zt)qq`LU)5X=8%s9uwf5g;Vf!9pHsY_gvvb7=wR}txgN6Z&rjoTekW2tr-ckS%~A}r#5|+KD7z~c=SuRjd)EVJ^EzSa#=o0AI4gZy6^hMNl03X(Otb` z!oX3&52%!y#Vr+Q?0VSYL0`;^*Jy)PiE4Otc`m)VLOiMzR{K#JRXB_}haR8U^bwzk zSUKFoB8lhRI#nj^g~p+vnZUqVj+eWF99q!)<{%WA+!E{xt|Af%rkdnum?)yZRp^@3 zA6hURMWHhksaG74^Xc6O7q5_FP5x{F#X$vz5NKB-EUrHy0BuKKhPh|8L*=g-l5Rtf zmi$M6)FGEAvz%3ugcgJO$EhgZKkp9L<^gM5`*kv>C@6f9Jb^XO-lsZ9$r1R=%Q~Lb z@zL_N!FQcn(eZyo0SCzY7I$YpDvHrH>M3=q;B`s<5(rXVru3-n-K(A|A!BB7?_g}S zFa@@V6wKj7_c}pH3toG}E@I$4VF{i_s=IN#%}I`0b!r1_BsI6_C;4eFRiBm+ zCYTJ>wHzki%Kf$Z4N(|LFg^RP&<&W-k!vWl(|0WZlb=0QvXUN%~vKc}o+MwctM8y7O0?1=8+I?|Hekziyl!w2* zlD#|%74=)C4ioDo(ME)ZG%r(L|5AlNk8$M?#{b~x5$n9?betN9-yn1L9uReMNjSV* zWlt9CxN zG!MNxL|?8%Li|=1%iY^fTMh$7pRVqIb*WxUKOvx#-%_}a8zaN76wtL$>W%n}S4jUX zcfQ)SuJA!lu%6eji5)!s<~u>NbKY9tvS;-(gYDI?p^=u81h&7v zkib6#GSWXkKl71iV7sifmcIU#ALuiplC{e-L-37Z3G{QM`AT$#po;?*m{K2jCDm{} zNPr8tY+_sanH+Fo7Hc#8@I4U*{zq)~NYnWesaqZGJ_qQD^eZGveU0z`OSk08MUHX+=+ zuD2S3q@ixVXhR5$Lbzswm}WvW#XJo=_81RSOt7?|yA1~I!W;Uk$j9ks)4YXt=|y|o?LHIq)lbu_0P2B{Fw2 z0Cv}vZ7guH9(}eIHQf;NwKsaBC}tximgsJ5y;mrWb!@tg^VTe?&@*5@ux`Deo0}nG!E^H|kW??Xnj&?uF#C zLGh)=30;RHuI@$)LKC{6=*PxLmS3*KM)4ae2^X`}%JlJUV!;ERK?A)ZTB!+ATi)Oz z>_5@O7T#dh)DIVhQIEY6)VvYxbTPFTULxXtLgB8j8ZeF|;ci6{5H*Z&a=0gb#JNF) zw{b-GEXMc(qc9WhGY5J$8g`o`GH5p1H95t%I5c=W1uGU>E*9r87gl7Q8o2H3?2Spg zi1@JW=JVT|1`=74k}9tgfO-_+oRSKei)J%S4TAzT7v45s(A*bEAB$7A=u?`YQO)8} zp}%8>yfBAbY3ClX$$ha__37!ov4uuHGnkuv^7N)T#Hvkt*YEIAwV2K?eq#+WT$s$k z>joE(25eEU@Ap2Rzt$Ozo9WBp8AHW^g+>`(#TeGM2Y>RRD%j}q-&t42=-w|e)oSUU z){%kY=;lS}&~U~z@S z$F}5RqQ;c>VXojb4FBsy6t$V@vNttjEJvd&TNPxglJYkk>X#PL!5c_USERrf^!}7; zioIl`Fz;6=%vY9}&oh;$CqPo-KfO+%kWC0=Xp|(`Pt5k3xMPQEQKu-p&s9Va^y!#N zdYPzvhw6Y2jAO50o6p-&srUtkNGz8$je?jAiBW`QK|4Yj%eg{~Ir^fW3vg#zay)V}UOL-11+JKNsR%Q~B05`1cGg*(e z9jYahfUL3D7wO4mK7|0HE=oOhqmcXtmZ-%r;KUAOOJ3D8b>RH3yyJxN1okH_U!%25L%=O(;zhYC7Sh1{j`Cgo4Ian>dT#4DLiWh;{# zokM1+-|7T(Czl8LI{PBZzsQ4mXOV~qqGM8kcbO{js187WjJn80*nJk3s0g4BdZFs! zbxGBG9}&*}l6CCMIW5T+yy?6y8^uZT0$yYar8Kxca^6p_}tJ9Kpu>PQ>jOnFk^ayz$mAXn43 zsh}b92OSFsAL!aX{(Pgv(iPN4m*XdoSaMSfFO?8rDAY!4m_fAfp-DT zdBwc(&ox>I3W9r z7T0baSw6zl%(_x(C>i&&GOLRZEh^bkb=}ljHAg+Go~mP%<^b(}(UauE8)sTl0i`R7 z{Y&+c40wwRSY)pcAuq&<$Fl~N9pge!)F2R9=d3-E){zV2{fz5^9@f`Ql=rjyWxt|G zfNBfaM+ev@-&Y0tUH}PNJo>!FSjS`1zhT`fhkS6?tZHkAWMt1@bAdcw6{bB;9n;#% zy3#%_UZ@H5zSj9t?2toL?5xlDp`yg|l?0{`(+C{(y*2FGxl1vn>EU@)Alc~Bpz4v+ z*d(5wJjs-!11B%5&Sox3tN2^_tk&7UA)vIi*2X%jDY87+tcFIs)U0xB<8E&z`OvRW zkc1`VQk8EpMC?b(N_#CXW_)J~g`r85e;RyK!`B<4`*}OB_U6s#(=-{gG&2#) zg;|m%ey*y1bM=cP{{3y&TFFD<7@OY351GEjv-n}Hc`cvOFs;H$=z2BK-;@_#R|20JV#u@e{?B4S&%!sWtiBqD8u-}ep+1@PJi=T)3y1k5w{TCY8 zu$DKxh0v_cN?D_`>DIo7E=^5M#OLBYKg2Unx_W1HEaGbJuJ_C!Oj%>;FxzWhZgo*> zY-*pRe_^MLE2K^Fng0@R^?zc4WW@E(1Ld*D^*K>YAJD8pZA%SW^SFb}HI5~W;_v;( zsn~>1n_61|Ap$Wp>JgOznW&u)HvFM+3@c3g) z+z2aL2^x&JVJX<4Nj6L&He~ywLm^F0;h$`F(~DEM2QXIs!FytvaZrhd9b<1;H&X6VBc?F zXDBlyExl}JYcmUL5_tC9WMkm&LHAt#y7-z`-{y+lIZozxAAhx9A0}?(gFH$4g@5tG zp6uJNlFlf$3uF#;|Ap`ye+cjjIk8{cqwfs&D)Njuo0e=5jP08&S^xAhIpKG#PkK4+)9jMm+)Mz8(h)EpH&p z%)nXXdhW!(e=R=mPq>OFSX;kdDjk1@pzdn7T>d+kyKi}Ty#=L{yVZHRs^O3Dpw%)ZaQqB(oz)YqBKN}DKe;W6}L@r zMpZSEzG*@zv$?s);o#^_ir$~UuU^#o^w&9Z};Nk49>#pD-8u@&Etfki~BR+YbbWz<-?n4*#W;|Btu)|4O)Ex9hu_m-Sr(q8cY(WQPpvq;?NO=GQA zzbT5}Apn(7=Y zG4^RpsP4zeIWh%2t9J9nN^WmgW>NRK^HE4<21-P`rSW}aYBXQZ^l~-=D2(^I9!0d= z=u(0COm8I^E3?q7iJ$d_=pVnci_-}n(g&J1t^)TpQ^lZd>*b)NaKz-(9bubcsWomc zLh^MEE(I#U0*VB$4FN>K?4i(Usb9@6MxJg=PG}q44#v_TNb+S@yf`awL_nMyMQ?O| z;wNGvq?Z(suNYCtTzO`m?Y3w&)-P)bI_2&oA^Vzh+E4l6I5}bphdJ)#mp7K{lvhdj z3R2%@6~9Y!$l2aVbFL%V%y6A%*vxcawYARjJJ>GFLY^~heGH~m-^#X%5M0VpcTIVL z)qAN1kO6u+#rd}_O1ASe-py|pWc_zaGhaz@URH@+Nomf`PDw@GHR*0?^)%ydS?#Lb ze*oK0<*nx?I|}5?7JF6QJn$dYgYx>V@{&NS0*&O^=-%g9i75pd38VD=`sMS9FUxc-d!L60&xr(SHSNu2?AOy zvi7kBAyse9)#4$N(#!(HRP>D$h6w)Mgd-9)sxB!Ouy?OvUQld!LLEGWx~;%5FRv;> zn>B=HXMRm)bs^8#U5R?!`I_RrR|n0;XxLMbCFS*t3k6Q_7)HS?o5H$BfroS~Tosi= zoqi#D+oTF(n~T4w>y{p2(e)L|cu6m#D*32!ILhL|+E#ai@)LQXXlsWz%-_9Q7$e4_ zIh)s*PchvR)p0RCs9g3dOb-J%9_uUomW{Gc%02pFob@gz@e><4s4F%;rS>g1x0jmM zyZD6kjJ&%lB>m4KsuS}h^Z6d9s2k**e8@SY@2c+Z`tI)%uHU(OJ65dg?nZoalcuF$ zzS!U^(ih3Spm&dAiwEC5I!)~~dncSJu4Th`ief#p+~t}RXW43nNZYj21S3!~C%Q2q z4w<6q2-K(Ik@Q_I>!;41b?=8?II6-?@OkfR3E!9@@b`5Sc;~i~2qz(sR1_>e@MGwX za8OVa8K>m?QINMb*5O>yQufkuS%!Yj5ZRXv!f{aFfVbYn-1OSMbFb4NR`9k)bobn z1sdbpC%6d#ColO~KkQVQ#}f*Y-(k2|L`;KqkfmGgvI8V$EX*9xB|pOY z15zNLFS+btZ5uD*m^h2Dl~Q3j{l%0^jHi1D$-QQK(Zn{C_f9Jeuiqn*hn25A$gY(0 zYL~h*Z;CW%Bb8Wo40y;h%t6ipxxq%c*XOj^yxba2ZxCJwIO&cFU6U8y$@3f2ORlK; z=31pg@yUUuh%a%?j)L!=$xX3O>iO$77eu`_8e$xwPZri*c`yK- zsL5WY0mKw&QjWBK&$Cl+iuK+Ptz6bYuF>vb!^DTNL^sp8^r`oE8A^R1C{S*R{3su= z4$S&x5RlBMs!A`luCvd#UW1=`5t4RdW3}A{Ldmp=c+=RUe}>i%gotHRoZ(T9Iw|(H zvOVk#*mipB{Z5Fk@@>}s<-020{i?DxX`d_6tQWF_2VP3IA3>U&2!w~-z{t$S`LB|P zUq)DHgDC)h8+j(iW{iPwE)zdWfNgz1;fMfRFGzf25@x#TmY(O)=@y))#0l%KYh*h< zRarVK0XkW!fKl@MdlM5XV(oJO!~2@a%JBk6WL)k9Km}GF=I&B{2Zv)^SPrJxA}8gS zyiG@`B*%D>9izj=$?ANxQTHUyAv?y=z3L|cl@BSTzHVp&pr{w7z7P6e-j`}`$u6UP z?ONXc6#yWrl!e~_p9$(W=Rxml78Z}rA0pG44iF=Zz*P)LzDYvwD%fomD7yIlNZDYG z_4V4lGqGMJZC9d&<@IGPall~dL~b+pyGL)&eOGq0o$8%|kFAg!GREP>~x8s|Qe&;RiJ!mHp`+C$} zr50is(s8{N)_ZNT*ymfH|DeX3dTWJg{D~Tr| z#p-VA-x{|Qw8*-iOH?|R%7RPX40mv3Csqyw7jFPruqu{lk)7g)mBY7I;&3GFwT>4V z73E6{XU|s37(tMP4zYl!PyVKMRW2e6OBsO>H~bO6WUasSU(jywe?hx~&njmq44w!$ z(}LvK-IfGxl{O6)T>XXsFDa}SJ8y75JF$6#W8$bycaopDASlff+)(#eaw|mshZIYp zuXfQZWeiHa7v+9|l7gdOcsZcMC~R+2njk@k2r|q~1+dZyfqOB3{Z=MM)$#EY$1$Fu zgx)t#-x(2m3DJnTWxlYAxr=6oLc-}Fwqh?e-#Ms>QZx#_?XIKHpa+R~fizpa1K{>} z`B0>apUzuT5n0gBQS!VxkvBgB42UC0gAnqV0QdK%Y%{RF?l%Q*98BpEfDUDW80gNH z@s4a207vig zRqft^Jn7%6yIFf?SYe56WxYHd8)&4}@`zYxF^}09gdoLoC9xyDq_#>z zo0x!TYC=cy6G`JR8HPlKISQpzac5h7^=$*q;y9jrAQv9zdH{GX2-0haEVO>^r-;PS zydj-M#%yauZ);GdcsARZ*eN6cf<{gV9W1*O^e6b0eo($w#JG--IFfJ~0e9mDWo%N| zAi?!I(5Wzk008yH%R3MW_CS~lDgTFm9VM0(f&O>|IxwPqU1=&E4!YrL_w-#QEcDMj zo^{VLc#7M7izES$qzDXU~budGO7z%dnq zkaiLvL`SIG8-9c7PWJE*Zf8i_T8!NTO{B_CZD-7G6V3N!0_=umztgJvKnm>OEjYQU z4#}2|_oAT`Vn*eSyGFd1cCu;?52JM6l%2|?xN`wS2ACt1RDn1~J(T1A1>5%}#1-)Mcd#)&vY!0X`&H8mEHd`bXG5hLiQ^2MpY)u-7C zBHBoKjWe0C4NxTsR6)FaV^Xk#$UO9be^T-qnjm`i0e-0CmVE@{3I7n18tTbM+0Sk* z0+1fy-daxC6cd>lUZ>@o?pXf&k#EsoaPzOfQ}>s~7F;S8C;cgqgBO;dp{QT)lzrf; zq;9X?!#~J+)hlVZhA6T9d0sAog&KR3x?@SjO%jde<8R43(`MFqft-_sN+oV|8eXY< z=;-rzH>j))BU)3o@Ta~|Y5$W}VjYPikeP|b?bA%wVm=>`4I#FeRT77kBEd97-6nQA!= zJ{#Isn%EP0?0)`DTxY6KYoKBJeVxc);n{=S6zW^yj)e|qZ&M>Q!m*LzO*R3BYhE*ZAmO>cU*>5p&x zVr0`&me8bh?WsGJtG<*jI%!(H|E6*6Q%i$s(|U5tqszvSbq8KW(H6!pe3PHHd|SFe zHN*GoHr`aig`Yfsqp{hfBK^4K2a}o*(buM3?9&9L?#stS4<7#=Xwjf+gfzFNskYrS zHB2H2=S*v^ZEOZR$o$!DcwqHnIMQ(-GzCK=9;MLA*Doq;=6KxEHg#Wk;7+Sx^H&F& z)<>lsbPnH$nV-NjL54rN z2i=l+MkK7>>~51Q6TRTje@BjlTCpc$>kR;v?hj zu}$GP{ZDh(FH}YoK1nFYBj4A5 zJCmr1v~Q0X?B9AS0qFFSw1I6}!F8Gg^-%+j83UjF23i~jzU>V(XAHDT4t6~lY{Cz; zF%R}=4)#Y44&n#Ln+JOS4vc6H4nG(g(;S+Q8eDW3Tw)#`Y93s37@U?ITGkw1DIMNo z9@-fk-i;bM+8bVG9+@K_+IAR#a120#hW`B>0a!)}rA9&KqhSA0Xyzzs%P9HcDC}w! z&N4j93$lz=kXus%^c@z8Go=i?jSo}vp4=o zYC`zhd_u&3f^iWp)-oZvI3ayCaldRrR%%kwd{Wte65yXyZJC5!r8%)fG+Cy2uhO*l z!3O(ab_#%~bp&9a5^;niRSr>==~n<#Fa4)k%hI7MFs#KiTiGP}Rhow&#fK8gaSMn+ z*|;SFhFgYM?hjzFX}~fpX?gme=G2-EY`PST1At)URPEoi@T-C12sn-%66iPp(VrzM zOWy%Vv1OwbwodBrW=|f>0RSxfYNSHV89+F>;=pz~#+OGhEE4R5oCR>Rx1{Dzbmm)| zor3boT(Jv5<^?Fn>G(3r4IO;#UwxDCPJU!wvq#{tXH7g%80p>n?YI%>XIYMlId z)Q-X(Z9%dCka%Z~+x#R85FDNJCktkWO8tNmM1#YWHS8FI`Ib)x{zhrrDrZQup?256XnzJ+sAwf323o%iwq%&M zJkpPW&tI@?C%^{71u09PKuBSuUp?Rf$SG&m&7U}^Jrb-I3V)EaU|E@m_gKG{-1xaX zV*|hzE5S}jB&W;J0Hnc!ASCqw{I>y2m}xWf8ElV(jbjIluJqHEA?Cn#eEEF+1F&an zY=|StWEOM>2|tKlTnK=phSsVPyA{Q|yn=Kl_3_rL*Ba z*iwh&&+_qa6;kPu0c_H;+vtm%OaR}O-SH#b7yh3#BlG(#P;(@B;t1A^Cyw6VdLDbm zUT%T~wsB?YUz5R7QzW1LEO$mP>Vf&YbreJuWCs>g*@Bcw%iw1}NsY7z9mHT;AgSQmx#bRFPe~Ui{7#5f>5F9y zq8lQ%oIP57Dnm6jv;Z!qM&^1{#F4G*MGF85YNwzopxj<#$YgrFA4>Wsg>GAP}*OuTj>_2~1;Gr}(W=V~erbL#=L_ zAtt8$o8Iq6zB56HuJMcNDZGDgnB?47EWqNz*&mrYgCnTdvPj0>`SfkEAg2$2EAoYn zLT#BeF1&xx5-zGnJaR60qY!;2_7wXR(}?9}Qy9G=0LM!dI%oiPlG5zM&=Q?OIdYI1 z1F$g`ew*xlyaJ5YdqJ57{64NH<_V|EW|C^M&B`5o`$oO}1*D$se(U!p!LH(0(=+9@J(6wX|VdYFe;UKoLSzI?I9AMmcDNKnZA zesP^#<6P)ryl-R@OYxJPS|MxfoIv)@ZM5q>PKST1 z12vI6&D&*B5Bi;Xv5M7vc_jDqidzpDT@Pc+2X7rb=UQXv%*T0<$G(_uowNREw=*Vu zZ&@~OEt|}ci4rbu5cw!eyR)G~?HR$*G~X{;`3}vefg8bjIKvD)L`ruLO8S+0U#s0v8cPQey@Y_yMSv6 z7n_!4nU;#k*XSoy{Q6Y=;*WAV&V&;Os^zC0evzHj@SeX)&w ztc^8$wz8(Nuhl5Y7DGsq5G8FhV;f71C4@4TvNQHI4U#pag-{JiNQHz_d8g~X@8`PS z=W}15=XpQx`#%5p=lsX{^F6=5$8mgr$MH7w&f&w3c4)JM6rX>% zq2au=qHJoQU&=`hw+$dLYtUEqlEQ~7y<*A7tyWNyf7ZsM7OHoQ8F!_OezB;zc-*Tx zS|D!}?ocK=CiInSBE^R> zsfp9YjumPQ>XMgaGo#zsosE>yJYV!RTj~G_~%B`N3dj?4@G2VQd z=}9uQB$t!ox0g?KI^nP!GhiWPlLQ2&T2_O_yQ z4&76uNXhqcw%+hypCVTB{wbxpcY@-2QJR9!EiI?%@LPIyx-XZB5A_wZ4^zhc19UkY zPIxsthB1y!@!Expju{urKG!<_xXb|tZaSBAvw}O$|MbK&fpz+GISFr}+p@<-YK(S! z(knhZpVr{3zBf?u>f22R73hl&!>9`KDzc7r@!08m3#Fma6+7OOVchrt^9uI0c+(91 z;-L#K>hfS`{mczq#`K?adwe)^`q(yYPetR2Pq;b%myDOZ{V%E;d(H-iwYk3Dc+sTR z60JY);xhStU&90QPx7%jZex;}EhBe_Px`pJEjW(1-dkM?sct**>B6|SKI-v9{|_hD zE{wO7JrBI}yzTW%Zd|*a&$%n_3?{z}k9Q!(RDtQK{_TzN2RpE!Qy)IOq{dqyP1MyX zVIf37y}9$?3W&lp#6sDIcX3n&Meeclr<%Jkjq0&_hF+ZI;XTTd z!SS{Mv)qLfJsOWRZg|+uihbDX!35SM`sAJzteulN;fY|*^CVj!&l!d0zY_N})5(4kB>A|I|Gpoz+j;2nu;!g_xie}fU7p4{ zuJ|EOoF*hsKDq0-p2HO|FFkmAECt>`|LW%H+^ySt5IASnpt7j=MRb_D?>v8Kkne3| zTPFq1WJKe9J^3$>>W4F`!>;=K+g|QWx>xU4cJMULV|zUL&PG#;s^7^yQ;!Gsov$4k z3J6UQnH;>f(K>SVv|f$t&|J($LCeQ8gfn8(Rr~fn_<8%|j+d6`tM^8YZSPJ5UNJCu ziMp=ae&g(XxaG4a>o4MJUsm$_Ms7d*Wf4}8a)OweIX(BA`#shXlF>B%Zcpr`As?gj z+2hmmI=z>MZIgi8o73+PAR0s~o z=M8tlDj>K;%VdR-2a*@6n||Cs=Al1XDjC*byZ>Xro6nP#uP;=cd-W--cl*`XJDcqn z*Y3A)KOXPd-rSQAvl3f;mfRD#rTgUPlFu%K31`W$^5b{bGMlc1 z0EywkYB=Wpn-tCv&p4hvC$ITg^UHBuTn$+Y?FEyD^3)^25=!+7PYNy4q)(L9D?Tkg zRA_QrsX^&^xnrHztFi{=@oM*I6BXmefS1{RmQ~bPo?TOos}c9uzRgvy+QQi>oVKGC z9<^7#R-Lt-_=x5KFbMad=9;%`-)0V#sr+tEth!U~M?Xi_5U&KifJWw2EOb_xELOW7^+uICfUnAWKJ@#+QvmK-xS00DDTd+yWjft!-QVO zevQ);>Ic-V(s%rH-MIj(xZdsQADvNBZom-@GB*=L@~m%UVt2?0S+~QZ7x^x}CR>7m z-MHBkN=GXMxy2>J=~TV;hLz5cdI7Q%!m61vsG0mM2nWblcn+$Us?^M&8nLxzVz$$C ztSQz%>(ve2`4SnAJ-2{~$A?=Hv6x4!+I!dYe|mqmi8UNzhy zf|W`}^-vLCpLkJ_oZsH1;deWXA%(=}7jz zrY64LG@e(1}^qxPpA9Dfnyvkdv+o0IdnBWRakPd&RvH zuF2=(IbUYx*f zxyFn7{6LqWI{>AUR)nt9cXM9|x8%?+G;lXFHuTOipErPX z$t9t3{GE5YMl&wg`-tvcumC?wvm)JyRgruP6W&OxJ?>6|-gBiqNsNw_PBAAf%>jZu zFFO<**6wT#6&r2#?~Dw)rK;^}me}R8L3J=pgru;r1x`r7fmx-pmtopHyG0Ta2;fF` zi||W7q3WB&vW<$3QIf*#gg6p3-Nl42gMn6T3{L6pFXGD3AT-{kK&Ts2l?z)Kkt7!(zBxKyEYsw=Z%dTiGdjHHgWS(Umz{G+waV-z>D$S9le~JS>4K$pky_yiNw^8 zTxm})u*S})G|yi3fO6lx9Q>S8K|CBxyG<7%8PNh{#?|gsL%?J+Keb}?MpbCBt8rab zk%}b!=*^g#cw^a4s6IR75WhFpN1F^aT#3RL@N!xC#XuiMLV1rLh2ZN;k|Zz?&5iQr z{o;G8``m4!zN53l-=2Q zV>s*am?f-(Y*0SOhKm=>~KiP4LpV zY-}&Sr2nm-kWm$8Kbwh(VnTToOp4oY`nV0#{j^x54A7{eN+%6stzaVVtc`k`0^1pM z8e7}xNH`vQh0lJ%lkRs3VzF-JLe5Ue|c+@xu~|^ zRr_(&p?Y(~N3zY^TBvL@R?wH`n-bwN0_8uQe*E#0p+3I4Qz0Q{#^Du+%`ErywTY9^J7qQ+w{z*&?MQp zPvIkNuQ!J`JGOs*CVjpPQNe&p5WiNahudd`N46dr{92_Yx6kd~MQ*i>TFV+~pVt}r zHhlTl7dp@Vh0lTCViSL@mmI#obbRFdi#ExXyBGUDoI1QcIrVF!`P|iIvDEF?+rKuM zJl9q(KETX~?QHcO?pWJ>_zFd3=i6v<$9l?}A7s0o?-L^(8MZ*%{(G4kNoX7!~XU)cE#SQ7dDb+8i&?nHuy zlhDniubCvyEfOaD8aI|K;6xtRAq!=ZMX}c(H<2Z`$X&5yoGwMSIYQcrqL4+obCIGn zK~ckAQrV(t>PF6uleNPmb*bSRS&@d+NP~$;{1)W^Hp+}jF?EWv+9F$KMcMh0Z6~4# zTcpF-Xa_&iQKx99t?S3LqTT$iyG}$Cx2}0$W4x)?PCCW-A+MdviV2`zJu?v#guHqV z8yjkMb)QpgxL?f0tk^3hF_$M|NeeO8vD7GqShjaE)i3s8CN;6-%K4fJDsAghGBz%K z;(Dx8TvqsXc7|qdRz%uF9K9qw4;x>Eyqx0{Uy^mHFe|>oDx!QMzQXAmLpNcl_gZ~; zLelPp=H`R~zl8R!gnJ7KOx?sw$FIG%Ozc~TZ_P>^@=KiWP3&Jt96{b-D%|L`y3y`; zW1M=Ux#Y%F-wnpXjW@`o8ik~%R!Jp(NyD*8MI}i+y-BwhlG+i;=?cjhMnq8*dKCt zFhkvAAkq5#y~o+Q=az>0&liu}!Cyyn*@TunDX>abIw-2;8COgwjL&7e5 z|5^26%M1U?t1mmYRc{(AqCRVK;-8ap$X5awQQ+C9-7q8OSUuBCw8;S)zdcltsUnZ>nkyjsPNyBP*!ILaYSzWImw>6zhk-c*b zAC(|1%qt7X3RCZz54>R~oNP*LLgGZkMPFuv3!|87z@sZqR&Xod*1s$~726owZ-(Hv zb(Bc$%#36zcs*z5)$c6lN=q|YLW1Q#5F`W$DSOA}=kL6F>4Q>{QZeH8ky6b9Ao@jA z%5H*~?K5D8Dx1-V!Kx48dt{qgvuMF!Rj3W`ZiRI;Adyw_HfdW>s{5#X7U3bMk1Xa`+i-x7j0{2r<}T}(dNTa7ap zA`-QYhyLop@t%H{ z%4=xdE7x&x_4OwSyJiNvcAvO&A$lVb=JVjDEn0K!yTL3i{y_5Kr_~Wt9Y{1Mo;Lrq zA3)f%c}fxRq4FoH#wZ>TG%0SXgPqP3{AsKI<$lgBzEEHy zdTNIismD?EyEMG}`Q){sXdu0G;cfEIeuCM#PxSOLG}kQ!48j~xH%-G^DBg{@|1Heh zRFTQ@PSPAwf0s#Il9vYV*M#w$mNt2R1Sw4eNI9O56pQ`)dHbHDQNyM0?=;=)&j`Y; zDK5~dQt8HUM0*f3UktOfP)OZN1OZ&yz~bGk7lN2S`yvN$0Z@e~{Rg`Ldnc7F4N7k^ zPVY}A6}J|?qQOjcb}ExK+esxy_xyh>jidkJr1D29Q+?^vVnQC6`e)Djy)@4LyZ_V= zt9V)G_q6Q9U}NPJduhB?r5vzSC)4rBn>Y|8CKC!hbeeITQcTuT33s3arW7tQpaf5t z*hB1$dgpI3pc{RPlh1qYHXs!p57XRTat9{^LvoZmw>gTFHKM_fK^yM; zLV9)uP2mhZN&v%e!7#}2em&K?t(C_Ub!QH{3gH#V_I-Xkn6gPe;F(mX0nS4T1OaA% zA{^(;Lj%eKH8-TouODt-r(hFlC@QWlQB0{qIL+UMHETuDR0PQQZh&Bl<`aUtKr!r` zBz40gI-LL&rLrO<(a?Ur_}ipD^*+BY^9Z1iDGt>)qu51DFAH}<`~ecDthpUCA5{(< zfeM?KU|j4VFBMqn4vvcs&S0dODI8GW$bt#sH(VfG_?S*OQ-evmg;QaW@Bx|@0N4N^ zGA#qM*Hp^L3YnU}$jH{YV>ILA!5*u_K!(^lUJ=V7-{3Mc(*7v*!s zhyW!wbTaNeIKr!}^k$B+x)h+rxid!!#_8fZ&+<7CyJP`}H6)i&*E$Jr`w-3K;y+Xy zU1RR2ZXDUJmI6MXc#t)Hrmq2>8rJ25{D6n!iO7ma{s2Yz!Vu%3Ono8%hF;)IkFx9r z6QKM6r?g^d3bWPBnTLJPRajH^A_!S_deE~S{CIGw8)I3)p8;5zbVqyz(|hp3=pzRW z!LRUdP~hh>H1vgB8H~}qVG0E>OXmc9Bp2~CPCgq5`}&Lpehq)_$}F*cE05<5rQZD`>y4AtuWd;@pRV_Ly6)lG{Xt!tXYngcnbZqF zToFG&?B^5?+F@8!6zgj6BLMYTGXM~ej0Jf50ALnanW+#y5+p_AOb_!zssTk^X6O~} zP%B?vR#4p(xc{IIR00_)hGn<}xdsy}q(4GV5Ht{glQx0;T+@&S2b}v34vO6&U#jOA zVR@2Lc&$JHuGW!c0JLomZ){B0U43orj$R)SnNk6DVO*Z!V)5}XI39ZtV8GxUcmy6S zGVKfaEBc?MXbXu_!IG>SXLCW&3Id#C5=z?r43AS+cY$s&xV~ZFfEp=w3|9yS$*O`c zl}|#Hnqfk+LF7-7c|R6T9r&@BeBIfA57?zZ0|~8=b`KrgESn|U3q*l5PypXfl0CHd zgJu6AtAey?U@9N0Zx!3Eh{|DIPOZ zdmKbW*%A0=sS~0=a{)w#?ph%#r5HsHh9~2Dmgio;$e0-Is!JrPBQsDQ$+v8W4GP%B z5@YH_2iq5PDa|v$$4~G8MN|0-mT|Y$U~rN)9R$3P!36&R06LWp!xHxrEbtsGQa3kd z6c8l#UE70VjwnPnUvM*q@>9*V075mG1Q^NF=+^*z(r#Tvuvr>z>=Ot$KW&M#&S8Sx zJL3`cN&HwVkoHlM?TNLq%tT%*^;i+Im!#IM!GL+KZr+`PM=W6Mv$29xbTP+Axg1^V z-^zkd6}iH2T(=cC?3D1$Muyx8ooKvNaV-g@3wYQT*>S_?q0hq~?c=9D7Yn4@yAwfd ze>G`d0n3EoPBgTp*1TID2YQY*5w2sIR7&GOeLkT5k|}s|9vzI*j}HPow4B8i9OhYg zr+X4VRUko$R`~r(Inl>9lM_!m4G*=xEwK<7db@Q1?I-NQHp_ zn0Q27D2_%vbG0HWE6!YNGvsa6zF>mm-;#^gUeX@`6`WZsW~hCZqeh1jqDUq#EAymap2t&!-Sr6bFqSTR~|fb%Fs>> z0`%(7*CdlwyipMoI|^Jl5)Vq+Eo&&4b8oh3TchsS;FBQ`sM(a|TRTmja5y6idB{~I zLgpZa`by=Jb7V%}%VIykg&e`_ONum&lJnf;``hOc)#%HMT$@o?UEyNZr_nO%m2*=Y)MU5MIMCcJ~7Vf2tz zfJS@xr{P^W%Sc_;yt&h%BYSAtyA^Qe<_cX%3w1ZkYU!f)Iv%zo$i3?9pB(10#CB8ccsEQ7fXD@bxU-+2^zyw%fNvD+ zBqOpRqZOjA@>3p@y#ls>$5nO=2|&R-P)z{CNyBOKvOv%$#IhY2cC$EY3M z^AU!!#vJqY=AaOuRg}2gqcTJFX5CCZB1^C!(+d>CeQFM1>5fzHByAw_S9ldtI@w)A@k}k~h_EOJ5%4Vl zdxy!3*MmO<=ZM$u<_AP1^X1cGbMj|_D2gaTL@Clrk(BDtcuR>tNdALot`IKAt5%A+ znA?UDIsGn&yhF)V!sR{`0Zn}4D|@2IvR1g6wVQQXKK@8D->k@y<9QZoVLqp_(EG%z zyhMje0d)YZ48L{vNnVx=XnIVvK~u5GGw)@odBd#8t)rq{#@MzLapdUHm_>2+B0-lu z@vc3{3!MweyX`gY<8FrYA6dBe^rj%Uy7Ylo z{{5mwtsu~`t%KL-=hbE`-mG&+vR~5~G_=7hh{--W4~)nZJ#7%>#wYWw80O3umd)_( z?>Xw5eb>W<-@^ZHnSGL)2I$!2Q5S#ZUA$s@o@9ro7Jt79hO0}5elN~HT^P0Gsq0c= znJ=0<4n4R-fZg!7-BSZ3OqSdj@TQ6iL@Whxki=jZmCWy@!xu{EHUh+1;Q}uabt#2= zN=gG-WrdSRuh`$M(l7Ub0jojf%@O5tjPmx$@{aH2Owo!i{fdV!6^|k+`m!qqT)?uU z6~p=!!`~|g^(&vbRKAF)oXD=6Y^|JT%fjC)S)x_5`c-o-Rr3*50EuU*wQ6YzBpFn- zB3iwsU%l>9y%ABpm0kV4wfe^-JGZmCJ-cd?!~?NqY_Y23R;qwD2Imxmdz*m~tKl=K z5pb>HnF5ww7+a%Y^qCsT?HZg|t+YX{tZS{jZ7sIE20mCLak*A)yH;JSPSc=H+qI5+ zC!uDktQNHbLY=8I+OETk)tea9o4M91=G2HKFwEQP?WXDvZPydT8hYaE^xCRalpCCK z8eG~M+@>11F4uq1XS{mf;O*Mzd%4jsr}3dpgZ?&1wY)J%tSQ8xDRjG*c!ptJULV%h zbY-gP+IG{|fyU*@tE$X8(&c7qPIG))b9Y3OvMpe^-I!?5lJ44)G1cIZ(6ki<$kUrL zw_E69tp#W5l9U@iDYX>lw3fBCR%|zT8Z<)*&6Ngi^{#D=9Mu!`;(UeDDj-i>V1}lSjVhE z$DC`&{N;{?oQ|coj^(M2PaH~OxK!yD(Ch7vjmr>=r^7!&Ho zwuojTbD8LNCg%_n1o{(N|1D4Ww-0_NNf(2L{z4!cM?(Ist?55W7!yOQBSrmx-r!af zR3I{mJ!pii40F1_u6QI5ABnz=1oc*ie|0)Y3koV>gYiO}+oI{DDi25hC}Ub$*&kpW zrcBQ+lEA9ZJ=6OK826XO6DOSo#RRed;m@2U7w6}G-{58(2N%xvbjOb5ppiV>R$u0o z3A)``YyvUyNGGK=)vtt*4}d|ZXGn&gdnt9lBa(Gg#6(XSgPwYQB$7ZR*h^+4N9Gi8 z@oXgcLf8=#_Qk>Xqj!aLY`ZT&r*B_ypbp<}+sy3w=(v-Ns|&m*ffK*tG1Bq#(PHne z+=cm1uUkcN(`*9qx+kPnX_N?DLd(*a=sjC6-cUFjV*xOSxPX)^m!scIG}gCdCPw_i z!b~hKMq!psAo|U+Ntiz)k`>-2YQOM%`&(*%n`F4bCSmY!#W|Xp(CN7pEBVs7RJ(nP zb7=$%#dmBle)`?NB9a%`ButFre3o~{>G@lJ_e$rp0~#0SbAleR3B=GBr{CWWpJ$UW zS2oxLA_=avK#vmgU&yD*mn{?|?qicMGz+E0qI5@pHVNZfws2&Xfd@*C-r?`kRhdIfOAV<4&3!i3lDj8#Fn$0vmM712STyPbaC)NpnM!~^uH2}V-kMy7;ztEA1o*{*Q&u%G=fD&0%d5S(Sd}%l z)E=X2NIJpIGg#TpzR3 z`MCa+V5$1`nZxn3U!Oajs{H!G?c&F;F{=Rba^_9(_kDG5u2(>L%lyKnI40U(a)@-8Ar>(a%OSNxv>Bj@Vy~{e>;Ang+ zp67bB*Cf&Rr?81;m7W_(y&kNTSl z-TKYfu5SIDLg2|1m^j-;;S!;z10;sOie*%T26J?EyjHdXncB&sA!vzKh6yO!3Zaf0 zs8t+q^yq6Oef_9TvYSSFV{=EnnAA& zlYZrVlZ&z1>sMv5Y@ergRr0`4m2FoSaQA@-ZQ{guWbnYFIAxFF_7?U>SZJHawozd3 zyVRX|^ZO(G%<4|C+jY2uZKJU8l+A>8+`qgM^LFt1o(D!hzps9Ndtm6=gPBcW8G$># z!R16Jf8oNi$lre!T0n7D^W1b6$LW`K{Yo7{yV`QU^p}O5thmfwiZ}ltEQ|}%m z^N9;g=m2p>`?&mHd&dEw5s>?OK1x4*VHiYcQ1F@5mZjWA(Ya}@4t~#Lk8e7Y1^`e_ zsrv&>mDc2kOgPu@g<~IRXXE&!*5+^8-c&Pb+-rnXTO~8xXxDZ`D?KT}T$ki!KHJl_ zaITW_D&}P%o9q{$n}VMWr2X;?B#jPoDu_+i+Up#6g__k+<@@jg{<5`Bn>ki5d0|c? zh-A=Ye*%KOGP>#0cYwc#$Ay5P`+*LBVjk<~P+W;OK{ge|;IuZ6uz3@(mabblZSMNQ5U~US=i*ELF?b znV>j;pnx${KL-#{~?WFF!z9_=>fXnOc137`I07z9E$ zhjya@48s_%+&t$F<-jsJ;n07$Np2M*S_mH z(67szDdfpbg!-BCibsqejN=<9DNHs|I&E@8AB`_iIUTQfH&;n?p(wr8xvaD}3FTk1 z;FIlNP7jnW^RKAu5WQV~r!ls?s6wde!`;>~ec#(U1C}ben=eH?@PE-=_OQ!_7x=BN z`2rw-x%)R$4b}+&M!884w(qH*zpgRZjQn-w{?Uz7y_5tLNS4VkiH=4J%apkFYsw8~ zVmt=S6wcr4%-#oUe0Gcf)WJJO7vZ<{LVY?5l#+$+w>X?8WGh^i47kNF3lzftTf1?8 z`=9)8AF$1_0q#HEA_)LJ6#Ius%c`PV$!H`Z3RroSRuWWT3h;=j=aw*fx+6vP93Q@4 zEqs*1!OxyDaB~)^!mb_5*r)Hh;#841Lu-w9h_wBeGls&`Jcosp&n6AEj6p`|2s<|i zo8S_=bO{vhref;J;n+hWYUVZ$Djne-#=g4D#*ZK{7cMX>haO1b3YJ=WT&{!r^ZWeU z-~IpLgFlbqFaS#br&kS!k_wr?GNFJ$X5q+HmRUSp&da-RMcN`kOvL{OGUTLnn&g3d zR}_NeY%@753pihDdRu1m$tIso|e@njc$9f)IU4q+fUpmP;R`pvxIrD@Z2|D_gn;4W)`FlAMjK_>CLhh3w z9PTc}H>B$@QO@7Xk$qjk5^T>MJ!$WU@ycgjw~N$z4%1C_I&z)r7oT3-&x3#5`qgpl z)``J8XP=hNOw^zM@XKl-^&^NY{u5g^o9(#Hf`@Lm)UYQu4v{NK>z+!H=+U|}yS9$y zspV~FpWE5BlM76Lx!zy?<{%Cfxyd(n9EDu}^0Xt_gDsl@a0M0#D&)r^Bjrn2 z6wZBr>1F@r#1?`bNz@+3o{Zg^D><1Y86H#^vo+1{on*3sBqbkkoM0xI%uj$*t(EkO zl1z+HKIwdF)^kayD?zdu{Aw@fG8`!)@@e`Rr+uTm3SNRiXMC;YGIzO&?2bGe7?*tW z!s}b~jHCM2cnGULNBWz-^z~!aoG_VC<}DM7=G# z1Q0IO_8G&K2sOlZC`**Pr&~?)uWIuXD4suUF#HR%vFdINmGNE z7oBJ9Q-rh8fE{8B_g~GLmnUi+w8Viv5b>q460SsAe6;=}07t$NaOOjeaW(Mq*8kL@ zcXpzHBP8T#v@ifeuk2GH36#EhfP?ev!HMMA9;+QGE8S6$=Kxa9?NDE{Y8L|FeoU(^ zd-CcDhwYB?$`)DZcwYvnRq8F7W1>imN7oMohL&pjmM{SjiIau!d1|B^)CENetD5e) z5qi>U0l{l!a9w3oIvh}J;jy~(dgk#}R&C(fkx}pwPP&EmRh#SiKd*jY=z3~o^tG4( z3y|v*a)T?$NuR+ms{0YI=cGveAC5*#igP~ybvYkW&^M>SFJX^}B`|BfKTy7p90 zo-P6@hfbd-Wg#itawuHc(=xE|Cx~!}HI&H=asS3oBJ`p*7cbCxzn2>ow64QrktsDgclTYv4{KeX+lg}FBeu0CD=I92R< z?+-XFfqrUCz6uc{eOD*u!3uuEX`8T;=-cd%Y3gO&Kj8FPCr|v-ItVuLx3=v{M-KlI z8)f~`oc#?W8Y!y^j<7F5y|VS3a+_ZN`u0+7n$dL8x5HlaQf)`u+sT zgiG~@N7D|LSJ_}AIWgc&ru&In@KRs>d43;5BHIs7k?q9KwRQnI+jmMD$M%z1yV;ay zdoC_@lPQghIsBd)(RML~`vPU>X)C_~N$kOc^M@-t_FL*$X_%F1usp;#KaC$99?2`H zy#0Nl;Hi3&fC4;5=*f_69^EwlH4n6B|y$M2cl-X1^4?Q>;FPd#BpnYxYhfC~bMC zJIo88_&c@SMFzVKJ1=S_G=xd&*91?>!R@g6Up+B5Zw2yD|LB zFEgT-M;wwQXGbU;v5yg*;zo}SHV0cnFKk>z8s7>*Xn&vcCS>^c8Xvr)qbqsP#jD_| zyv>y@x=VxDRVn}tNhO>x1X7i>6&|;3p61_6%Aqw?Z`mBtbWphhBAR@DU(~bw*0bwK zktn@Lsw~x$ghmJosqK&syqC) zCjBS-febtTD2X+3Z(|cEQX$_(N%6}w#J1m)C?j_wjR4}0!Dhggu*@gGon}aq!BmON zY=V~*Gtw5xNsN`i`O-k=fkedHWXEH~&ZEcxmK4p3(%||(LfzzESXwNm$0#k8NE=!C zAL9e=EtT$<3-0DBEn|v;$_!#_B(m-5*{*!)TqgsbI8ACIr+Dbg>ue z`JS=2LJ+FK#&x^R)jOdvc9gSrBZt^Sq*hT7fouMn0UuG&jzxmNak3ENl7DD91oO;w zjDhfc(pmA{3reX#E8u#RfFZFU3z7rz43r1QzACb)mT0f-TBJ^fB1Tdk@(G>P9@I4N zV*t=J_PnJDsMMMF36p6Q2-;9RlG9o?ea{d^l@(Y9Sh1LmXx-lPR@~YGf2sE0MJ@IR zSYa2n85Rp7{V}KrSP@uVv1pV{lvPUpL$cs5_uMRv8H*$du4~Yj!Lt4FyvPND&`2&$ zP?3|K(x~bk#s6HveAV>OFqbUrb$gcdV-|$U3$=D#mF`yd&>js{HjyD~TiS5eMu70< zCWO`3amOsrB9a5+uYrkXkQsw8KvPcvS@sexh~g^=H^$TSLZ;kb6DAxf#^$g5OQ=MU zF%;DHL-&&LNn_(=q-!XL@7?}#QAMc3TW=UJo(QHzm5-~9^9h2-rn`m5z#y=)qxS?2 z9EFmEJL9zJDfD+_F0}P!Fjxv4ze_p2*=P8KRRRp*h{NZehNq0*V6Pi6X1;d~&a+XW G!T$m-5xdv` literal 0 HcmV?d00001 diff --git a/plugins/hls-alternate-number-format-plugin/HLSInt.gif b/plugins/hls-alternate-number-format-plugin/HLSInt.gif deleted file mode 100644 index 22879a597301b9b0cd5f399e8326e275199882ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159774 zcmeFY`CCl?AOC;O%$a>@+NXWmr)it^RnD|dNsUTEn3ANzlxPsnEY-Bgq$mj^VGt@? z2s7;w2BEBjkUe{rmp;9}-ygnz#P{>Ou5+CqpVxJ+=l$_~Jnr|~iHeT&4@mPx<$^x} z4`2!~_M#elGt8KQW^8wcqnow0wGGSM#tUz2XKVkz#ddIDI(T_HIyy3$bSDQpCw3Ui z&W>eo!*cXzG3{9_CX40b>|pBb?BpE2$i)S62{m%zX1KbtT&Gv0w>y*Q?rh1nw)Svh zd3YLogxPpHczb#IPVedM;pSsQ@d=IhWf=O-Nc7{x`txD}f}(<=7X`)p2M73t*qP2W zGo3jj0*2wxkQrgNK$t5z+>96jb0STRqg>phf@eg{4B)z3aU-Ln17}1Bdq#87(X*Ds z*wAA_{bzZE&5E5DYfOpt^Nd|uI6I0nJ0UxMmKQJ3nwK*p!JU{86P3tvOA0bd;>}Jr zq9rd$n>T;)yd`n-@)J`0O%^Ozu#kyM)y1VI&RrA|ya;A2T9&`q!E!N=vSh&meoi`n zl_<^IJuSv7EjB!DZd}^@#7rtClVz64U%VnZHfJt5XGv_1grDmJ(xqjq#N}Hf%MWj=XxvdL+p)EL!PeIL zs`=Ea()Cq!`>UGIY@ZWWV??YuQCb%{vo0mEo@usg&(4M>-RbtQ>anjj?#pfF9I$~yA z+_K@~y^ohp@4a-T_42I|)u2ip6{t?)s+%RfCwP5QY2VJcfiueo8 zjl;-|TLU+=A8)qT-|T3(_5Saj!4t#R&J90#csDv=$;%H< z?{q&qx$H%I!iz6|USB^nezW!cosRd` zn4*-G)vEF5wl(!u(7m!B4YVET-^K_lH;-;_9;{&|9!(u=U)D!pJ96a=8Vag+Tl4nO z;Hkqm_rVgPMa*gCtpnT|)}pJYkK8%TI}o!c=FHK%$5KvZKfZeA*!`3I?sAJ+XIn;3 zWpP4zt+v${xBSh1e5?BGiN_a(U$MnJ&i&3Uf?vfKPr)ajb<6afeLJjmwf%y}Tj^?T zx(w%0fYqnjsYG;sxR|JI4BZ3Ava5TG=VvT$2s|K& zh2T^RWaw)F>aloRz#Yf*vxd-9=HYu!Bv#7|5LnJ0Vix!;-`Mbr_qI=T~+p zyGJt&O7OTEs_e%uTfI16@p8lDxVzi@BF+QZInAf zvYF5CQK6*rga`>*tr>K*&nUcw(`9X}3=D4;T=mg-0?(ZEn}e$AV&*n> zS{P$nbF$i_U#^k*bR;Er)8D4(M>(rjg)2}D@9l%+-)YioUatw>UMIxlrM-1Ve^bt) zeZLV2gp~|iE^#K~g$&IMo_c{Nkl`;wbUURumg2-kx|Bt!b^9;NFTOg-L7yB}nM4kE zZR;v*R-nv$7^=Y@daxWdXlmQl^APQ+Qj_iNm~sqC#Sg`sY~o*caw8>naJo@OBZ}m9Z?5GB7Z4TfbYq4x>o7j}$xc1oBdNf|qGCE&{ zDsIAGn{x4yFU6ymR>6H2%qK)Sl}$ckexHx*6w#}hq0>*3GOG6Dt)x2U&8BhAE)3AD zQoZWSDLnWWF8AGTLug+LgD4GVUM-w^Q?+yS%Q(WWPp6#EH=1ha69utt{zY;?8VHr8 z!A$^JYn0c=MiDfM1R{e+3m6zYEtE4D;bo{0Rf!%0(ErFi7<57#N{pbObfCz=ntyF8TZFCs{O^M|r&lVO4QxGoOdj8rR>77357(GESrP(irkU zfv5pseKFnmt~vDUmqC&Ai=BJL&(XRY_T9Z$thY2AGAROa4Y|dq)ys#^w;WWhF*${RoWMtzi z-@tO){&<2Ez@+T6h*ea#%~b^6$bW6Mk`H1kugBOw~}bBC5%oEhL4JfIaP&(KmH57fAC=IwzrD&u!} zoJ~d{4K*q<@K&^#96?jZ^N5oJBj@#P%9PFH!T+B#*G{OU;vH4&(Lm z@dZ*t`B(e`a_M%zf4nNR9?2&naL*JI~^)@jSMpoSCMchd0 zF}Wun_ZFzOH6$+3-&&9L@fy^7)aj4PU0WM*{wPg(WlW?;u!**kt1`M6r~3(JR95<_ z(=V>oDcFpf0R5ORaiVx`_?`BBrpt3GAJv?DvjaA~mqC1>_4CJv8s6jnKn~6RwBcPb zp$P6XI6x?URb`K{^T+y^ETu#>UVVa(7cOpHCL$^>x={*Y%;mtG;)Q>o({Fb4`K_wf z5o%vBbj}Y%#eLbn`|lWYD*pV{c{jf7y!iJed)xV;<#Asd9{zphfAjo}!W&9sc zK@({=$!j&tqNyeOcK?MOTcw^Tk#t)k1KX-8@thugh&)*LDzC&|%0m;2_~f&^64wb{ z;qE^c6Jp2ChhhIjI*stOcKS@S+3WY#g(fv$=vx)PxqN9s$V(q3NZ4Tar3S8w6>xwx6dgy4d;^v zRT9J8{j#nDDx;me&?(F9X~nw}VbbW+%|GKmiLO?N4A(oNUYG7I_P1MMAci*&&i!0T zKK&P+%*Jt08=({go3h4{gI2Ohy}XS(tZ@o9#B3$>3iL<_s!vY+A<+3rBU#=DbTyb8emTYj?K$=Y$Zh1OJ@l|12(SgFu8Kx`j^in@W5tk z9BPjOXHUzAVEhgh_&X~9SZQv{YnP)MqE_SW!^b@I6b!-sb_|r)8p=%-Zhq^A!&BP$ zAwK0EjJA_wiUgE$f1(wPDuPKt%P995#H~W4Ii>tWp&oMrr-u-?FlamSENKYpt{iPx zs!N&xjREv07`ypLUiN)b0u6JUM)H{uUuR(KX@s@BN(v8k2f=SnmN-PA1m`3n6M1u0 z#AN=a7#S2YAk@{OG&G#90()AH*?f+83@)~>!|u^W?qVahKf$Lm>2o@+uz%C@I&u+j z{jt}Q*%N3(B;TQiV67?Hqb06W<}bC~=B4lb+I|Zcfw~mb$#B$B9Q61l{^*38onpp4 z1DtvLh9V8|u&VlA>%#9i>O~3Zpd7>EmwN`(EUeQbtIBax)#$qj>e7AbCq~f+9Qv-R z!bpyN2V-<;M9KCIjGrK*l`KP`f2H|WG%#oY+EIr)tCiHUaT-20#2;4&ka7S@5e?M% zVKo!@odD@QH=hNg17LK4Nsaw$NeX-Cvh_Qc$;tD9!d5&MWj`uZ>CyB4(Q*wBPbz?y;8TH;K zyW0l~e9LOEpK(fF#rec_GfnarC`6w%)aNQ{k_O;SP(NwND}j6yxM z=KuqupD#XT(qt1;aAvd|a|?Y(fM(9wp~BT#sxWsMnARhEty(b+4C=*J^uO1QNfSGL zm6G5|@a}ovXf7#}hHe3>o)6T$7NQIkRk`EfqKT@N2HUp%%HtkwegIc(Wbd=m>>R+! zL$wF&&h51+tpH3FH?{Jd1-U7bU6$;4>*d&`*cz*O>+?2Hjw9r|uk%iR&s+B0?9pOqi_ISv2&4QMO?Ar1Z|jQRJocFyQt`*}O& zl~rU>M{H*tQD;|G36))KsjhM7I5{dTwJw}|pXKAWH&u;cw&i<%k`GUqoKI_*?Um11p)A{QV*F@+MIdeK z1q^G>4i5pfngQibplxX25gt`Kmr!4hYT)72Ov?3EbkYdWE+EZQVci}ab8OvIp^^INXWzI zuTsk0r%3t63Dpb6K)VUqF=K2obBCpdTcyPx8)a(+@$!jQO9krW+|$NQC=(TKNU;5| zf@oET$y8Z$6)kUmpWz4PGexc~^&sk&a+w0fL{OFjJxds*C~$Y=Ixi=n-T{=2jCvag zq-b$3X*%OtVglndx)plK*LjcN=LAAWXu_)s%6gtqc$hM%*>vw`p~z2ITqrE7Yu-9< zjR6hJH(p=tSF%io%jAQW4BXZ~9R{T1cKvDVTETU1KoneRF3;cR$3h$14acDP8Y2ET zDBuwjPUADRGISy3PL1N)Lno_3PJMm$zx!ne+Bc`|zVv{U@3 z>eC9W{6XG_*LjI$hppSQ{Xw7Yh7hXIqbbR#4It50j=mab3ciY(1GqCN34(5mJn)FXW8r6yd=>F3gU~rw zmn1;9@=2Mqu6CL`JOM4yX&{GzU5#Llr|az<0xk$K&d4mPb`U23uDj@CT7loUhHMc~ z{=QNMFq~VXp(ZP@Jb*~cj^cnkc9k1n8mk>-J-^|r9V`d74D!4#72Q1P;jrwBJ4=JM zWT3i-0&Us=10MN}K<9^Cr;TS~EF(VW>zsovFf_E9L3K{S+46v5n#7z*@nL9A3;_Gs zly^;-yAx1dumKqc-&fwy$T6f==xi$%GerZ>((rp5amf?-v%KiZzjw;j?o{nO^k?kK zje1vpQs+(hLJGnN1LMLVl|}#xgp!1yRxofi?*R&*T&hAd7SVM1E1xn~8HqmtnW*mQO_&-NkOrWKHMq(?puG>EBOnCepTL+=4scC? z50o##-5S2G#a>JSOSbBjwx9KGJ)8EQlglN1EE|Z!-ytEmg@eT8Cl4I=K2Lu#Zz_S7 zx&5A%2cSDamBHw_Fp35PM__7(9KBWLNSQb}6F|2!9_-)%r!=Ib2}pmAuD2z|cWQz( zq6No3jNLy35NJ;5=eILkZ!~FcJUxf6rM^1Lzq$0^n}r@rI1GK7934M#6Q00a%+>zp{(WCNj%_p+9&-9S9xmS^;q4#kA}W(1}usVb_JsrZ}*z$1dJzckby#$ zp6&kJkLEWAZg8Hu?gxBx=borf(3{!a^W-z@$`^a^i_6p(w$)e9shMBBmwffz^3{Le z*T5@ZgP(p4nfeM_eQOT3f%c;k-M(>GKlPr#z&x5Uf<4ptEn&%1E1rXE2u)v(o{PLn zeEPj}$lX@M(`R72K77yA8KFd=i~j?cZTYe4<~7PocOr}qqkUSv<)`dDho(TSMi`t4 zXm-_4@#=vM+t91E*q+oO$(70VOJ4ok4bBj}t(^Hw6gx~q(DCrc+AF_qzse-3H=;%8 zwKsn?ZxeV}>yNF}KX~PL%hTT{rhd0t{b`^1=k$_4XRjDGZ25EHq=na+KbNO;zqFw$ zjr8iOO`taL`+juaK7FsxCPTg^H$op+Spzsl(yiQ|4r<5~g|?s{vc-t0>Y8~7-|TCIk~7>Z@MOn#G< zIb=jg)50iXG}p$#Wgz3$0T&{BGh~u5#@%i|dvExzgqJZpT^C(03J{g-W?ux zSe#kq(8U8`r7)K4i??8LL@0}>wawhmT2WQ*Ue$O?H5}pMWYaNVW;byF0O@Q4138?{ zjk<3%U)M8pNS1iBo=wo7zTk8P+Oe(p?y&LbkBg-!f>L>AyHYEKkyeZsom08~{Cp}x?Kdfcyq~Lk)R-Gvx zhP1N*YSYxSIjFInhDFDB`>lTLrW-Mn|HWukT`7UaoBVS2#O~e7b?w(`N>@gS(ay=i z%(m-^7&*gxb|AvQnr4mF=(%-`*DuA-QkUo^C`sGqmN@kuFnEwvyerMJO+Y2yXD_3N z5V;bAgupk_+SnL{n;q(}U>Q-57Czp!91>;wV%^{pleMZ*p28=qx~DR^WPZjOU(*G> zrJ{s^7u69PifoEylXAPTjH)?l5UC3773OE1~VsI`a+9~7kcIG&OF5otsv9rSQC2{0$SqxfW-a#pe={k-U z#C^uA6IBF=z^!lV!VhwYDS(QA=qM zbRG}Eu6T?fGGM$mC$|-(W;9H2P?vvaV|1)oeATj$E*?e?LmzJp96vwP(4j?>NGGWg-TK((w;Vb{@ zep}*E*M>9h*o!}P;2|SpgXVE0B+x(1bs>aZMJ8^;dEoAq zvuTSG)jsANr_Xz~f~HQzzqZR<3EJnT16de5)v}px>uyyn8Cy6-{33On=n=qb6~1XH zv{hsc=~l$x6ErAjoRiS-0%N0+_u+!yhUl~^@WK*Zc^R4GUD-9bS;;U{9^&|pE6{w$ zAa3dbtP>LE%*#5qoT~vzS+IjY4Y5q8*+w|2equwBCDoxixQQ{2qD!Hx?J{N6Qz^9r z4I(b1Y?ild5_+b)HQ0uH^1@EE=S1Zk?(0&%G}HUwF89AC(tymVAyshjezBc4A6-9= zwTfYv`Gz0-f1Je4Z4`&B8^&!wm~Pet;PyyNwo#(TTT66jrDZeF&ug9HM|Z+0&u}a2 z(RPboPy4>&#K;7K4OP(Xjc{cNzG8-sr1Y=DDkukx3|qi4=HGfipWmbs=vo4x*xPsiHYGb+FP#m zBlE+&hHIdwMTq`8ZJ&D|(B}6y-Qvke1g$l*#IxFG`!k88RSRA&Y6eL1 z@=aJ2KjKs~K*>@QzXh*|S^W#uz)a#2C&Y{GtOx$S75Ni$#_eMdSiF`?qlg0Onqjq) z=>#x0Sigz6zu?B50B*sz{u;2AVLngm5s83D7-%D8%KJzxRtOrGiSBQ?5(#XE#Uv?0)$F+dXU3h=vb?-?OjVwlc zbf)3=#SH=(6Vxg9mS(Vz`J-vRpn_TX)gnXrFbc1c`L-~2;!R*^l{FOf-wmBayn3Q@ zhPj}0!j`StZHH!=Nj)w)M7EXS0bw{dl!3%^;TH~;I_zqbLf9e-|o zStB`>Sc-}vf2<)f!pl?BY-aF*Whf>LKvuvhy9^+XkE0vWz}1Y<@$1TP_6>Da$oNTM zD_lBbRUWm>2!0V)dSRGED_+A*!?oQxt_?^>G*C#UPV=r?dTqPo_-qa4*@ONT5fCNtwKs$KGAHQpj zwZ1hbz~4#Y-?>&H1{FxYpmW5zl$j-3qADRH$V>&+mxfxb4K`~Hd4DJ5qpjbGYo!|p ziVcw&M`+uij-VC(ILercEJy59N&;zOuCVl2K*z!n&lqe;W!=;84l`o6vqe=zjR+qc9+fgrO-)?C9TJPxL3d1idiHk zP9QnrGS)Y-)0nuRwR9t`be&uU`it|0rHixBp5EAS_E|4GfUHDc4Jre)(r+(3NB|hh zK+L#Crm?c7l=6d0WcN~}+ZM-43C@S5C}DU+1~7wJqR$f-!cr07S9TkfkrbKPjM|3h znlbSs-PpKsi^NK3nF)0VT%x>jZuzFT<_B0@D6073vq5Guq7D4PW0?*iEgvS$3s`=6b)dwJtuQ}^tnC6 z5vyxTXvH{1SaYu0W$^M?Q%!8NazE%I7~G&h5p1qy*Gq=1+n=t0^6UL}EyU&o<41Bz z7Sd<=NxNwS5n}$q#ROzA2RPi+jqTWP#uELQ_B)$VM5Ss&Gmxu_+7u3+FBs^lWeP}8 zvA1k{4hW?UOg%IR98K*>p9HZT#hDuQj4|!+5kT}x;A8m2TZfU!1OeG$mPhbMs z;{V=Vf$SRGXh8EQBIhHooRCDlj@$a8nMz#v0J1SPe8u?o$a<`GmS`bdIvsF)9=@bE z39Ud62wq&L7a?=TKzfg+$OUW26}c)(qDMp_GK^t8KvR@Vw*z#zbm9Bhx84bVjvQhM z#biOKp{BbQnK7dtyOCMS8tljvT*#!OkNiPD3d7A~&-jOgXqT35817gjD_z0wo~q6O zq5{y1CNLc@Vk_yEgIY0WWm%y)a=oS`J_UCo708zjBzfP^odA;jaVxmKWi|+2TkNt- zav>i$^S2ofm!1f^kb=zMEFwm}*VA(<-6+Jx4a{=o%pZnXne8O|TU;)>Tt-b@n2ZS`TPAXm=VNqL}WiA_8E~xj7aCE?9j9quN^6kU@b|Qr{#&J%8ExSW>n3T1k`3} zjM(mLTej7Con+49CXnu~fuVyz;`WN@9hzAds*(CLyJy#6o%nONcOXdvr-y$bk;;-s zHR$N#_MYaRJX>ts2YFc2E zS7396Y`UB!(Qwzlx(pGqc^wx5=^_*pI`K7dg%X^?rU1j&I%Zyf=*9wE{Yy=0fuqOH zt{CSQC`YFrKn4D#u}ltD_;}#=#vlKClfZ+=hpezs470EWEiy4sM9E39+nC?h#$uN}ZsVOg-qTL531h?d(RQ@f%3 z5z!4p{UaH0fRbFf29>XgA(eo=As*i(?XRZ&Z8zPitPT=aYyA-%E7 z~CG96rjvRCOI%P<&`8!T$p%K7s0k#o9Tgf?b^FH;(9lRhmSlf^p}{N zFJ72}l(#^a>qUBF>F(I276ALU*ClSwBJ<1F7r$6)^Lr_w1DKZuk+~vteMz7ebX8)V zCenEw5iUEQR~$^oF+_fo0aLD#V*fs2M`?u%&YFoNgq1FqB}IRa2It>HF(vI6&D!a~ zT?by6EWKWdPSbTj@BOv3Jq)_w5@05KIse8CYj_}=xj@`H#C?_KIlgD+;>8=YN-M%k zqq9WOa_kr3C^O`xWcIQTe<`jdFPG88fAFF!lvY*;W+VLC>qOtau~(qBcnRBUQ*}(- z8)={r2Cc(`S9Q)7cMa79u8pi)XQE2?JJTo|dukc?_( zz7NyEw;!vFy7}i0Z8I(~1sH=e9yabZfpKLI-t7H&%7o_gsY$)k2vp7LOfv z4kmCV)Rm%jB`bCvd|q2?y_hsBTp?mHkEYq;JO@OPe4Xl}5-S9pufm?UMdpuVSnxU2 zq-3#7j31G-ECw#l>0jGCODgQAGW>}n5~3@zn)*7{UxewHWy%m4W)3GY-*;zjGdLLj z;?1ik)#FoV-2j40yv7LSF$txjMA@y=Yyp_feA#(9zej|?V*_yE9CHa%kXm`sRzNBd!lT;62 zvXCV1aJ)A7=J0R>%P#}1=z4^P2hS}+fQ`Mqy{3Sq{_@I1{J`?r zRfn2{07iDY?qS{^_zR9vjv82AlfKm=>Y@4aoxplIueQ8v5oke2FoJv>+erkZPQ9%G z81AWL*=hZ{bP^02Jj})`b<~Ebr}pgI{omm_hWP}z&<|G-a0PjAX`teCDJ;AV&-)fJ z6K_fvo8!fnT(RW{A@ba}S$=pt4=7waFZSoRc-(iM@%K57-xK`4Cq{iwn)m$$a)0q} z*Tlu&Q-01Xy5lG2fi5((hYFnkdhM3S0cqxV4`rDSp05At`_g$`W2bKTAq|dPu`=RE z);XWQZHOOIb^Cb1iu>!{wm29H(W#|XD~$`U1V`hQsF*Eczkwfl%M0zHSQj}JkDOR{ z_~(nDK}#h{U4YIy`E&EUQ#IjW&K8yn({_vBWU%CJ%AUKmMQ9J^q@+|h74)J&=&G~G z>xZm=vhx1q*4L9&KPR{0e#wo0RXhIL?)R(aXVbySFUn1}+gxRD^~ytRtJrvtD~KdH z3jau95LL#98h@>25I)rfT0F4tPCl#nruli)Q(7R8T@hLu76Z%SD7(Pu(vI2-@5 z7r)x1-K|yf;*4Y~rAo*DxVnM#583YP|67ho6DCE+qBaC{Klpe4`|87@L&k)C0C7Kq zcmOVcLw7%n5I-I*Kh~k+qQ!VJ!60V6l}$yLt?cx~`bq|<(`s*+b@_h%*4qrSb@@qM ze*i_dd}h731`)X_|4Ii?b5uL5=;#O-b(w9QMw8wb?qM@3r>>+>?#kI;#k(%5PKMSr zHEO44#nY7 zgcMZ@Q6FtO=5lEvrbbzm_OzwBjJBT2`DSKh^AWkUKgl_BW~Bcl?JbQd7KA<%g7S3gLp&4V3t>=Kxu(6s>`m-|? zgV>;ls#;;9V=}!W0cdzZ8&`^LZQgi}u7N(ztS9IMO2LKzl~pp1QIlQL%QmEgq43&iEgX zT&$EIG_-VZKBcOBv2@N6_IxA4Io)yH#zB66jr;0I*9TOf2BYmvn_q32?k z`A?}2Hl&FeF@F49)nMv0TNs){eP4{%ud^?JjUPYSj|fBNGXS!KR8B+FjYM!UXHWWd z3}MfgN{W-}e~@5HlF3r40TSvk-Gj@BHq72>9&bn zEnxKgxV`GF!CwTY;{1a&qZB_CxjmFZV-C!d5S$c%;V85{w1G6g^@xxh`xZVlbM87? z=1p^h5~m#Gm8#5x2%xO-0vM0e@h2u3?~#X=JE!`Oyx10RH?GguQ>sdx?&H(V^qcUG zdv^`s6PiMYBm681Lh4O2iR;a6@#g)^=V6U68#cOKc+(Vgn3$#10+jSIC&SH!u~_xK z!tvHmmkH*IZj&DY%29TbtK+p{<)WDAWdM zd>q@!K$VOVct@|Xf|J<$c=T-MlVfubx^L)?x!Q+iMu)Q{7-Ety>XklCQEY*aO)Kq! zXD^se6Mo^x$kHkAYKqf6{#LfLhxMRsS|xG>-S?k)lV*M(!m@m@mr%OvplZ&-dxOqb zg1@d@wZ{%JOhS4uZpdVBb7a}=7eg!7c1ICvPJ@N^tMF+(?ho0bbM9@(oE{zWa`X^2 zRLLJnn<{htF%P}%4YwA<3PTOdeP4LQ#u)AS6|LvZL7@aoQk)5T)#Ax@k>n9a_7q!nJ3?Z4bpQ`62Ip1Qcd6$CA26*=?bRSvhYPve}$1 zvgAKY=BEK>4Q*Ac>_iS$+Md9U&lMi@amtmHQonV&P=h}|{xZYB#!^+hR$g5xV^{G0 zUm7r&!jz`VZdcbd_OJ)8&We^H#<+racI#U~@UN;EH?p5JD-9s>cp^Gj4B9F~V+)%4 zuM{Z^yXjaft^$eDJhxk_wb2WV?!P{)kT?mO?U+rdS$oG!u06MQS?V-vs%8GPNhRzy z(`Y18g@Twefat2*MU?lXH8cdF%8sCiW@y2`x7ARG5+MeE1*dMSsRaPm0;)-wP8hv( z3lVfM!h9e?2X1o&9Xd7BRM1P#tCF~tgz1v3Qu*(C?swpk8#xVr{lR}M{sWAFot)+2 z$T=(%H#R}6e`@I)CZ5^3TNtQ+0$+SdHj2eNI_soumL)|5BQnl?DP__-67s|ZEr zluNpPB&->934fe4;8D80cy1#qwF)j_Wxl<&U+;|a<@&}sH4Q!v6QIfcX@oaP*YaS( znWM>99#S!E2W!tuWkF8mdqK>3+^1fccy*n%<)y5oKs(z8e;6UdAeW> zN{=0zUcMZSr#pNp37vQGR4jEBiXym3^~vaHa3+km_i(6u+XY|DUzj8frf4cRjGv`CGXdsW4 z3-tca<+HH>$mDm90TUA9KTWt)c*FRzN~%jw6n!GXX|6wt2|LXYoL$$Q`Vn=Bx!_Ig zYSaF+m-FJD>YqGOq#CH&us6}D6+x-A7V}a#>fy%n#awIRZCL~f3zTQ#_d^@-&`ttR zyn+#m8%UlS$bQPfnmIFW>6uV{+hn-F8H(!XHSmNtBHm+1XTE#Tna`TWk7 z7eWi@iy;k75hIvgS0qG}Ns{qV>uKEVJ8G6j>i<4;bpUefxMipTOqPe)W$6vNfX;t` zJsi*_L;b-?zAxQXo^l!O&W53`5^9%;D#gnXr@NQ4)9-V<27~T(A_Dtp`3^wf_;WK2V5XN9=4TB zsDLTxB6;f+P96{gC0n7MQF=4H=kX}2NM+9y+t_sj6vVVeY?2}}tVg+i;}&4x0&Dms z0Y=xW1_je#!<{+bq;7UypbI?Cd-TM<=cf-mFA3Jp=1dRw&rHDQl>H7}JBS@>95ejn zGo4oJ`B0<85)Ycm5R;P7069neokQ{ln8RwSfympt`z-}=dDKO1RU5YK^b>@hS+Az@ z2IASO{~0=)5=Q1Mg4kjwHs|A3h~G1+GmKaaA=%-e_0c470-qSG)-hF^*md~@!We$2 zjlcPqZ;KonMY=MWG@jPKatd*y4dtwC3fVkY_b7}_RrUO(SC@&1swWBf-IlSE8MWQ| z^=XhddWVms%ur=j8y2jPIFCJ=PcsV`K?gBH_q>$U^mfk(4|VW-iV9b;QWZAgJr^Tz z7;}#2gvjRsP&~HRps8=`5KL0`Lqh70|FpB55M6$k`(zhR1A)T0?{`IbNClpLa9F({ z&;7@7(+KpM;uytirr3j*um;v@twRDrSNLZ???s(nV2VfK#X6SEH`T&hjIdfTSB ze8JIW8JnjZvPuqRRXMEKd1%F6hwMX#vQIeVoIR9t*&(;@Q0@(fmG=&EO6U=knU z=wY^-?&wem%{+{kj=&T(+78B8u`NR`1 zx={?YzkG#GQoD|H+d=OR>AgesAl~7j@R4hTkVwa2QC{S+PPeITo6FT?R`{7v3_A6R z;lv>b2FN`0YA`a?130J)FofN=15`$qDDT;-R)X5QGAH|B#lyBexQy}6RV^2k0Ov{4 z<9aTr$Xs1O%^H=w7Q_TLPHK}zE>?T&(%!oq6*zAGX4R_Kd)l;~MTLUX7Y5NH^Sn>o=X^ z;tDO9nC~+Ynt_;U0PGfa>h~8j6Dqc0)R@1v_``w)%MK?0aNTs8Z7OUf-V{6uMJ8S~ zOkj;DpV&G-TXm+`G+Y}^$3xe+P1kD5L(ehqYur^LnUUB*5qMgmQ$^Gsx0J@jz&8_b zJLRF3`qSd~Iv5qsHqei~9zWa{-a@7?yt5QrttWZ);Ir7Eqb<5v<%k&B7o#l%k2ehI zT2SOXt=cAbp796=6i`<;MOoddjs#43T!6?$>B;){Z|a)9acqkKiz|6gZXezh0&ZRa z(}eCnEBmo@aP)n}N}$B^4ZJco#`D9haPJywhQu+qW+Q9B02+u!_4>_ecr$Y6)IW$I zM6w>~5Prc%Y|+f)J>gn$ATW$K2f(qkf|W>u3O1I0<|V;c2FHwB;b7b2`6tmd2r!4m zf!t_%k~O*D#%souioK>i<=}YvStVKt>j)8iWqY4#1g7X#@KAT)`_Retjt;^w|My)_ zXB>AIcI&BKtSJQw=yA;0R%S>390YNQ?OOUJ-j<1d5&Wb~4j6w1Kh$@zgS$BOYL-$G z*ch%~soKYCa2{7jp})ZfQbS41X>*-Wg^D%7iDh<0X25Yuw0}#%tY7N>_c8Wk-ZN%p z*1Jjnd(xj$+q&W(UJ&1?aX_bB+lLKA1dC zpvbq5Dz-jo-TH8-{gGztV+4FMPI+4Se`tHps3yAbZ+FrQAqg#X482!Tihv2d6Oa;$ z5UPlX2#A272^|CpRRq+~i--ZK)`Tvi21G&h(SWFkprD9YIsD&q);Z_C)!&E88SP;tO9rf{E+T$0|ShI`^GMkx z%N6{Hn@@5U#J0i-5cJ$uXQ0~+IRdQz4qi0zN{%Ljv#PA#c*t2lFl64VXlgpu~o7HEvDCI_s%%3>A&NMtnbCAf_&uMg|(-e z%-uy@+{F&N6OOx6ck_B#yLp7ipjh(Wr8ueU?$XM`(j!xp?US-599dtI+}f1Fj{7bo zE-&k$pe^jK_0=H~s`OBv7K_MP=V~nP@+q7T%Tdac@pnVZUoVzugAT!GnkC9kCu0uj z7jpDRz8Vw)+TWa(bTIoi&L>fyqGx)I7*9v`&Khsrv83snK7$`npE*!SGV9@(y&#$Y zcgR9}#6m2~s<;!^Ju??XdNhnYkoDK_&|Xk%{F8Gk4mMe^8#4|HDel8%jxV&6m!xuN zDxHS+7I*G0xmmpPx%V!};{B1Gd+$$Jd^qRTDYI2YKl@=vkH%UZz`s~N)Vyi1-nM5X zs>ge2?D^C)!h*q zHr~=n%u;;NK^9KWH1^>cf<67GQOop4>h~h z+LoJ^M|oZI>5O=Gt9<8}&y7I&f=rUtWM;a^a0_*!=LksROGi7^oy(Gp9pYhQ zLk1C%@_bURRc@V<0E_5V$4?gkAul1Bc~;|9<+?{+|0z$7|L~;N?xMxzlvC}Yot39Z zioX#(L5T6B58>edDjqhpCoxrOu;5zu8g**WatJ<(J=x*UdeH%Loe#}tfGsLv<)?q) zYg+{+j4M4RFXMD>OL$IJV zh5RXYXVQI4HhFc*PEMYqfLLooT7smqsmHFZk3M}2(wXl3Aa`=!Hzyx-LG8okzzMTGTXI zUBt(k$pOzH`)h@k zA3e9;D^S6+t~s1Q`*`mUT7g!S#1pcsNqJryY*0v0qX{SI+$5zxwm5%O#YvrJbLn`` zluD84YLa@Bqjy*vNFr&04o4#GAu1>L3I+R>RHf~oPbNR|d6V{Y&Bspk6|t6xjNM5Z z64Za41QA#dYso=NN>5 z&W~EK6rTgFc1dCxmWyvMKsC$k-wO$Q;5ir6@y1dOO_3^}0VEnv=K)9?8u*f|-@vw(IuX-Z!>aqwuu>XSJwI0U<$@|IQcoed=|)3JqJ_rJF*r;S(&Rv9<35O zRNweLHU@4kZ3V!@OcV%W&tMEA$bg#nmrtclEBlMyODUv_hy~k*g>6J zcn->Ze`G#=T=mAEubs(X{`>LfI)s{q(dp;Qr(fmxUAwYbIeI1T%1-}*^oUh*^Cf-s z?|PY#!wy9{edC=uveq%u0N${A!Wk`xRLhjni+Q>dkB(aiwR#$luN4+~)v*#;KR`Lq z)KZl8dAIe9uOz{A^fbtpLy$e&8aaHT!(?#YMGeZ;>7+bRY}9xr?K>VOLpaNB4Ufqjgos~A)F~#Q(Z!U^+C2aLC6c>aWzLlJ+wB6THTzEX;t@MI~oyp_k z3(pvI#FcfpzL`8kkvk|&oU1a$mN2stu+VHK6vqSv+#+|7gh-ARO6>^~Rr6H&gQtVb zuNbXxb)-^qzk{>}XV1T7JN;ko6Ue-h^1p)@64~o^`aD*7#bypjhMk9#;Or@Hd#6j@ z2h!rROwRYYS2Rwff z*Y%j5Lx&30e7I8H%WACFKcb&}UsR@x5^KE$JIQE1fY`ImI^D2ox9^_h#(Qv-b%IMhn1QKGi}Ng1gyJBf}=dNajG&1TnV_>2)}&s ze5=>|S?=Kq(k_hbz!B3q`IObxymb2h-@i9JF+8v`p9}x7 z*~sXuK1@^SLhLbaO_yaoy?J>}^WOTXnfGmhTV^b1TRB26kp_WwC-uBQW~QvtLz2f8 zEijdU-qP(#0`rGFaT&TM6LQNjnt!|LBz<3Oaj_OA1LsQv@40fa@K}K*SaIA^bDa;7 z4)Ez4+fA@{aC7vc)nK8d(JE=-Y`cIA$uYdO7n-kgpbP+Ml<`XISLy0LKPP-&$6dTH z^Il)zBH}zgTd!jSv+riZqZ5htgl*QlBgU3~QYuTh1Fe^hy1PxJ^#;v81MuIb0H_=o zl`UWwI;`_S<;d$;vy*R`I}~~8E0phOJh~t{HdMBhGB;Wq zx^M}3>C-K`vbR9lf^&Y)Kf+3WsIntU){V&obpMpI1yj7?{cN+FMJSi+Cm zzf2wy(cps$&b|YPq!aEEvGADjP}%y6ITJ4I!sOvP9M<=SS`xk%(ar}XT1NK2{#+(> z-DbIYMTX^D=kK1$l^U${CRpq9t$zbU;K%7u9ZKr7m(*h{g%K^J`EpOgq&##T;+zhK zF1>aD4#(P{2oog@2T0q)M)z2ySF_$3of9fTTAdZJ{EH8{D!Dremy~ZXtw%tX+RbhB zZ)Uo8(UzMH9E29JRE7nP!HV<;i&t{ALLT3h8w5vzB+Td^WLN-_`9l-{+gg+8Pe40O z$A!B15}6F0N|Gpb{R`W*AG-Rl4kx}cw15V~Fm5!OeWuhBnZmNrX#%YhMf!<9{zd=w zX2XJ*f5UiR+B@J2oS*xl6Dx`vGdOV#9Y7F8^J@e8LWA!N-my4AE1*k*Yp=_IA#yZ` zu>3o;0_1@ch)x#gJyuWs4CP)!RPr7?*Tq)WPSkwf{?)Mp*ZGw434+0GbZD;PV_sX> zyC&8ds$>e7a;ET8#AbsO zkRZS?&K-zi%e0gwuw=gG4dJtkQ^NjI0lZ<~X^t8KO?)D_Soj83(o~Zp*q8%i2 zMIPHlSGJ{rAGhOuz*tA}LncUgvP~Tdz_+8hGNj%ewuh!NUGoN4(+Vpy0EJ4Ntk~LsoAmQHyxiwI$1b5&Wm!l?VjcS{gUk8M)*dxi1^ZDi||F zyz}=eUifyGv~DmPnUjK?Ari~F_nM8wn?1N`_UN10)L!#v@#ZgXn*aCBd||J}yF&*| zEagoFG~f-ev>)$nAfqeyYUmKfR%i!z(n1OI@^Xvvd&YCr34DkSSu$E4Ka&aWwUMkL zOSZE#E$pz}Hp2FgJScSGGP3WC5U_~@ zt=qjV?ZptCq!7@bLpmKz)|Qq!uP!L!t@M|`303mK7Ifneh2SkZfyqZwgE5uFIyEAA z<%r9@bTA8$TI9ea$oo=4$kNZ?)DSEcL`X_Fcx(~6pDe^A!U^RlsUFgCy5-t1NU7Z8 zI>)0qVMzFBu~e(P3JIEsE%_X;L28zmUXWXr-xI=6CIB!BS!NX!p~M10h!Vr{at*au zTh=aABRjt!_n9oU6U9<}@45RZ;8f7p^#rk0PCJ|kE(sQl=+SVkKO`t7)kOnUa0t&? zfC9@_)f!XAL6+%=wj_0xEc!+$w2AQg+zmGkJlm_5-i`-0zZ8ZJanphJeCGt z>FG*$=pb4mNg{0W?k_$mT}2$G*qO# zKsr7lnoB5Sh{*+aM%4)nXNelr9#c{Z8sorSNhtg&7qtc9vvgrC5K3jq^=l7GVk<+9 zCPLsM+5y6Q;%<0Eh{eTBHbewHH)`98lJ2e0>yS5g4(UvH7_XP7(Im4=fC*CQ>w5DY z9hz1A7YmE*g998vM~>hMNT}u!SgFTyf`;XNk5C72Wqia}V!)TK1QI90m=5W<8R<(# zRqYl)X_jZ{Vxr`rGbSTdN9~r$WC0cQ@G}h6=8sPFcXtQVm17vFj@>D>%J^FfbOmp&Fv*pFRHuph1Ixd9fsJTRNX{n0@m7q`fl`k`G-`j)jil$_dvI0iT0A7R4ZqT1l;M8KeAo z)Fv{Utat#C5XluSJETY_{K>8;QOgv24;(GukEMd$dKi+fwDPS!m0`LVp$x1si$PYR zu*Qso9}p_D=*SWI6r*&85ewcXKRxL8pghFMdzWR7`^EB+AYE61LiFeWzzs`G2P(L6 zNiEiXL?{U%eRe@$PdbP#_SKb!^ImY1xV&;|xq3OXw95CPfli;Uj1y0xwf}2T3EOFwj@%aBo|wc^2p&KsNnk_;m)c zEs9H`ojOF8w!Nr&fhOEe1W(YS?;7rVFo9EE3V1|vukP|W9xSx{v()O6YL|_qXf2G$ z2bYl~?NY9ogBOA40@Ws@P76!MPxmJ&$~_EAbIEOaa_;Cj08Q?< zS!H=`z)upBSf@VU1RUKfkPhA9aUjN30f=D`P-bbe2&fRDmYlUJWhEd1tdgO~r|9H9 zJqVhK!EQorNs}>ep#&QF41`Sf@*D`U)bgLS|KOe$O1Ak8C3sG%ZN_^_cb~EB5l?_B z(djp7y$gv}G6_9ar&>Sym1+U7q%j9g{j-ldGgUGZZk-l)7>l=1b4>|xsrl_jiL_ju zDH%)VS|FVBe)pa0yKS^&a;rMQV8&IAFZ>>;tF{D9yuAINf1X7SsO#I^kGJow{l2$x z;QseB_h%EKXMug!hVFxEOrbJ&>Jsu0u;a0i(%K{Ywbtf=-SEh$((@|9B&|Ee5~Txj*S`Z61rZ9yPpNxJ zYH{IFG+=_|pEx7z!Re7bEdj4liVYaslRoxHYCNlEJnhf;52Xhe0~D)L$3j_S=kCBU zfBZ|iXE)E>zIE+^Cm=9P!eq{BF74NJ?KM*4h^f>($h8U|LxgruN_TW$;s3 zg=mrg(1g1hn4Soq?YkzELsAY0hKcnSw2EK9)T6$8$Di`~R0m3_O^K<6qcdPtwQ|fJ ztf_=(jhNpKVo{|kSlE&e@?)ipWh>6x8SOkR?}u;gA2ddOmCrAiD>B5q+4ltRU{xbZrC=quURz9Fwa{e5jm zeDk~f%|p(c;{e}|#J8jK1?3j{Y!=@A6<+@D^~T|#?`dL5z%%t{gm%sm2k@bD{SVir zXU2EGX6^^B5K+{cBd@?Z;BKAI3c6c$y8jgP;PrY~MSVgjY^f}KYC!~Yb3r+rjrp_TS`y?l6d26T6hR~v4`~_DLBBPQlMY*i&Bq0_Vr9wO=#`q*Dk8kM5 z?39qD%NW9EIjKSkP_1CGrsu1=pfwlr+Kbm~3xS_MzW$tL_T|UDF9^|f*qd8V0#Vaf zK+i33^Z(Y~S{#zzNtEP%I!+g+EzBuYiJj#mu5kMPlYXnk7gT5kQ}TnWhRs&?n?J8N zf30Zoe#mL@m3Kc~K#eAlWHR_Ii>z{~q!UJvTS)l!T_}mAs2E>s#A>u zOVpiu$47Hvj@dQ2+(I{as83+rD9yXO{fHfIVK?Tnpd&ZRF z9+{p?zHHhsib+IJsNqo@AwLmyDf4{8*6Bv)YST3IzP6cG&ue~n^Pj0fwMkOT6=aETFJJ7!_BY%-?G|wRlxJqenb~WFuzJA)`9*Ru2!atoYi*C5heB=^Tt|De z=n7DzlQ@M`IaX0p?o0@v)D4iZ5r^ZXU!={xhb6b7;&dQ!iTzffi`o}-n)TE8K4=$c4tF7ueHrI7@ZU2DiX&AA;rqy{iCIh_l_0`%^8eoTnk{&*~-cv-I)O!Qm3KuwqI+7im_^z53UQv z68v2g;+*_yM!gak%Gdr7_6(#KW_R3L9bD|d*h%#i-(fsEbEEfb`NI>pFzuR@+v(`& z>@#LO$sC%nF;V%rD0L%4I9W+#6e%rmK5jzehDm3B!s45R)x-MlMK;Cj23C%n(}(S?S5$KkPoL z*UlRtjJsNzR1DI)-PWpM zOpkOfN`?uwXDQ0U;0A;jm9U7=OCs!XHF1(iPJ^dVz8c@?N-^g|U4x>VBME#)Mwy#( ziXo!b6xt;7NJSew5ttWO(P;J}yQ_J^@MBkb)l!%i*<|7kQblF&)YPNOi+3$G;xA3q zOhT`iFdk5ps-Bdo?A@E}a^SP3=2#{=2WWL_Em&87gK;*lH*jq(i?`Y>wGWJ6dXzK~ ze`V7;|491Og{0vjx!-2P5}!~!y5Ev;j6K;1lF!T3*etkT%f&R{VYw;62!ZR7X63_5 z=c5wpW!75k4x*=-`3Zj;l(btN-14W(+7cSIj<-4mp`TVxBs3XbZ*@75|FmW$q1kM$ z)y)eH!WrjYkffKR*?5A~+}CF3<86oB&;jIzh*WjrGXr8*D`OZ_y3YVd#5WJOyw{jM0&T|1N` z0DFJHzVotWu7td!nX!J*Jz+_M{ILGcQ1kPOhhko3rhA%}0g>uXO=>n1+29AozQR_A z4picMUWrmWX7BF1d^Ye-o_olh`pd(1QYpzT|6!thi|J$+rC=gSq}EZp zcb4z1;vTJL!TDf%fbh4* zL&8x3w;=c|fNo$YHy|cJz(}wjK&-;&fd=A9@K@h6{cEz$NFpSUsbq#c?E)s9oW&_i z)gTS84VB0o%ue_xqdk^EYdt7Br4#hy%bInh*y&u*PzL^kP^Q|!KqUx(dEFNzf&brm z8bP~bO9e@R{%34K|I28elYtZ=1pKeD#Vb12{Qr&Sb_FP_lx_R}*JwW7FwWEtov3lR z+4QKI5Tr2t{}|1sHe(kvmBSfK8PR?;y~{=^${PQF8_iL2GF=ZUy6hb7(1v@N(5#&N zu>9*Qxpi6Xv2SnvAz4qNyyFL5GriZNbpXk*c{G%6?RHEf+S0&zUD9}fnI@;?UgkyI zgSZB;4c2cA834?hZG7i>j%$ZP%rrG4Vc1bwqJpYfoak^2>LTQfp|_KQArL#cjxBx; zvO@p1N+pIP2vni2G-l?oARNiAV+cAJC}hZikL~QyjeX2{e^wl=t9JI!7DEAmsH{Ut zsjHtKT+=X%ySw0h><@)O8l$V?bs**t5;|PSldC_-+2DzUGHKMa5)my6*)oaC3pvE> z{#r+*`>4H#WRf026YtBN^@MB$qjpWs7xw@sP_tLgzy^$Y8urLAl=jzf78G!S=G2l1 zcVMI>h!D{-N$yIW67WO|K^I(DGvcQR%3JZ&MrU1{C4haRCBK&Mbp9(}12aRB|@ZX9})ZL~p%_d_yfhW5uqUd^x|wJqdMj zIlt`ts1e42iK^|mUw?S}abBdKK|F>7eg-1$jX2S%MlrBv>e2Xb86+eiPx;vJBpk6d zPMXa97`B_s(96bkXKx@4LKO7VN&R_0!)UVr$N7+?C#Q{suDfH~_&%AGJU=YHqi6Fo zjntlXt7(M`6Xw}lmcBU5WOV!qj3rkOJ@Mtz=Y8&*U&wBB)Ilxz-8lRMFa*Ne-Z!@y zRNX>uWi? zpi%3H!$ZIMuND27jUbDo#cnFZvH?t!UXH_Lh}5^rac326K_(FBky(n`ZZv3icogOL zt!i#kMdQ+oNs@&~)$~l0@tDKoxT?L?uM#4xS?c5Qx4vCoFK9M%d+;bGv5UARVXyi_ za%VgS9DfB6Y#|{WCsX3Ov* zdf#JVo^p<99>5nmFu4_ZhoeLHR8L47GbH{l=NPMyAqtTk)b?`D!9P>Dgq=t)NETJg zjG~{d66;l#mC$MlTBkEeq&CBSBv7`albW@nY$1MVPlFKhmRzmu)p4@sWm4hEf}tDq zXJ9jr&PAKNaA|Dy`L zue25kyoP&p;VZnAWh)f$JKyMG*w;I-(%_okJ^uA7ghzIWDnxjDl>!wh>+COIwTpe%y&8u z5lr}bBS^*8B&6nj0;U!b@tKU}XuaQm@h!TkpLFq8ESYKJp3dUytAX~xBL?&_ zRk=qC=o5A5LOr7fCx`c`U;H0On~xcWtw-;_BZcVO!NT^<=|!oQ&ELO*H8^(J{{{Ao z=W~qyQI}(RM^ax6mIZVmIA@3gCpYQHDt!O3|5CGtSL(5{bW01Bjklg3hzK1Z%iQ8T zY^?!wP*N5|(D^?!mT^3VWidXI{RsxUfI^PFdtx zu3^N~Q5mJbC?{3K?00Da-N^Fc5z<)Ze}{1$)m27v5>;}~v%g*PzosrEq$;4S>B(N9f2Vyli36U8HAOc!P%Jx$vIhY_N{nCPv8u{#SQd1+ zZcACB{c<$VJK`zjRHXgUcl5jyb0?oNA-=he*QoTgi1X89^nxGs7gWJ{v4nFHM_aZE z{=rXV;RRp3$GDL4f(U{FmFc=4vW9=0rL%Bp>;A^93|wtI*T*T;2)nqBh+Id!(?jV1 z$ou=Dg9HJC#H6XQgj_MfEgH^>cBCmB`;-s&*Au9qKyAI?@99XKnxnp61l(sH`bx0AgT+c|A;?M6h zH;e_nD2P+B5Oa3&RSN7JfE!?Xwr-Y^e+FuQNE8^rdGhcjfqd~31 z;A0Cn>i*qXxbLcvE;cUT7jvAR$xe*FdokWzg4vtsXpnfd0b0~dfNYu6%)^R)UAo$? z6#CD^aXl$c0huJC!UX3RzE3IyO`JsMXIySN{5QPT2!O&Sikx9r52zjb=1?hPTBqdb z%J_JOqgtnYt4_<*MOEW!GxeCZX}#e}o!qY?dB1woTlGVmbxoCZW>O87rcM^{QhoZRdXJPw%lU?1VU5)J#(iy#;Ejer(Q_Qa`4H8!m<~N=2YjzrG3W#b>i8_>&(y%$uO#kJchHmJ$4uPFMC9meHlpWKt zvl(hz-l8}TzD-DnsfIG6JWH#pT9*#gwRU;78Uw9!Nsy~(susynzCWZcvqdJm zl}u{W*w>N}b<9ampd$yzWk$YDIQEPdb!{^=^%PdR5Al|V>m3W$Wg{|9rDq*!A2&VO zzUlXYi0V*+%;=$5Qce%&+e`7a&54kqUv0H|{v2Pd!B%zmGu(7OgjdyW65a$Y25ZwB zZbCDs@VHVI> zt~5EmdUrU`HtKFH^dbTE=Ogqj9}`MJzUQ1LYIbeoQAj^W$AK2zk4KGnC~VzWHi^kr zQaf4XeY5-**dA7@cBD(~TGt(k&Jqna?M3Gs*a>638gn9qg2!EM3p~GmL14a1QTnF( zvxdt{KrTlB;0wglL0hIywKVM6AE5|MM|y1gHb2r$4cpp_TO`7*iI9izib4QK<+0BY zv8^94Ljz$2jj&-h?)|{-TOFR5ahCnAe2_{|Z)8eFk%8#tu1k?4Xzjy+H{*D^6aE!_coJ3#YXmF|jK%lMT zta$#%aO|n|i}i-LsvZs)do`E=!0z6!h7cYpVBsBgzQW`lF2tp83Q5psqWGvtfh zq<8%~B@nxny`&=elpf*7j&@_gr+64#OW+ny;4JU7HS=sa(9u+um}ZZe1_1kV^i~t} zsh*(i$S!$%>iB*^4<6@ec_1g>zSN# zHNjF^OzcI*P5!Yg3i8j9ytF?k2l0OX&Mz?3KIsY^9c(u0@v~4>OJIf>R;GIXB4V7p zfBb4rf&Z%!E9TIH1CG@`h_2lbG7(|5-X}8Vo4PvYXx}aTu4q;sA7Z75wm|?KsG!(A z3O|0dkM8b|1Q*atR$)%+*cKj$4xA117W{7(x1k4rbO6PZ?txC8HI*rP96LVH1N9v&1T}ZI4e!g3C=hKyI+gaW1cW&rqe`)4eze3>x1gB}9F_B!0>s&AT@RjG| zSvk|!-xp$AyiV=Q%?;0$O-eSxbM>6Le{HAh!lq?ZvMUg|;j!s0nIo~wPm5qPxjs{l z7@&>=>05QdtwUb|z+^*RhbTI278)ZB4M@b|K7glb3B#ALc6Lu5IqfbGQ26tZRC72} zxto?e@dA@;N5_@(d%II1}opYvSc>d~vRcMVdbCXQV`&^x~raqHRd=eZnc zxL6Z97Qj&il6K5Tx|AS4O;P^qh^Hjf z(WRVYhx@t)k+}wR>{B|-kBInp*e~+$Ssn4N0ya+X421PuK;8f8<}x4u`nK%k%-6}x zu?N0OJVX!?aj+M$$u8IY^HTQD8_^5h2P%p>*{`W$J!*aY`i4NQnut-(#Ic9x#m_=< z*qhH}n-569adZ&46Ktx7@8M6q`c=Hn$88e@sq3Ky#J;OQtfNc z%*H(Y3>G(l>8LXDmqWc2!=jW#(Y&Se-jfNUJsB%p^I<`zO zo^84&gPT=S>Et>@M%+FC&mKdXsVx|-qB=pacvD(sWM@%8^wv>Q##DS}@bzdGW- zqhB-pHgK?}KcWEwCpKhoZrvL7vU|QlzHjvCd{qf@RdU-8*)vMsgV&L0{!NjZIQE!pQ7$MYPb=xMA@|4^WFT{w`m?2 z-~&@i_yzjxg3|ZEb52QU;0zCA3fv1ixAk!I+g%^{G6e&6|EhU|9jWW2D|P6%AwGtL zjRtWRjEq|-Rm7{R1tch_dc-jZdCB# z`YZet%QoO(61T)K7&IPaYVu6tvAl3$;K2*q*hN6nqoKw{Hn8&>xGSUfOjr!Y*Smd8 z(DUOJ;3KJ^MqE(q@L(Cry1`zYvi$Rtsy1R=n$=Ppg(&hPs_V4;d^zV9B+ZlpdOqdg zyh>H9a!L&IJQ|-|)Iak4&ZYQf-zLN3i!&dyM$RAfS=e`M8iJTFRsSewTSMIl8G*}4 z+cQbru-(ErTg^w3Lx%%RwF2Hh_1_K~Rpe?`C?coK*Y|60)a#1dTW#*7f2SIB%vND* z{q7k?6xfTXzTe;DP}(7GO*qQW3w_u8pNz6j82`7Y5)!Y_crsG0y@YC_4mpPXxUhe0 zqQd0iVf}MI*yqJ{W6DYiUu}0At!KQ#cNKUR^4GLv0R4`9TlU^{w)8y#9OB2sO#$=o zbBaS`RtoirDq$k_c%H%Mk2Y)s_t1GmF`uxh_Az2B%QAoo1AJR#oHKufkfVXV z>OX1FDz}}&w5gHHaP*iABYYb77R#2l$-D312ILOL5GF++7t= zzM-h#Ct{WFKb~rZ<+M;}Zc;j#Ddh4sSn;vRC#|rW{ZfXyT{3^VX$-x)n@nfE>b*By@!J$tkj48TqEOGZMRN`HMUgHot?9^tJ8bObh&%Z? zg%?{MQe(j8x(JzY}6Y~STXn1A}Q`vUa z!teXkcr<_N%gfmKUvL^q`xyc8bof$u>lGmFJNq0&uAiSF64)Q?^D!EUwr6db} z+OnkEgj`!{^Gh4@e7+ygaS`Kc=1kv#uQXhi&u(d|Jah7RQRRt%Tk>Dz)6FOEo!|TU zSNRRiyPIV3Y`p6IFPNkI!f!42o>9H?{r$@mZfOEHE!I|6s;zcy2TvLw1-0Iee357F z=i7Mk3dXPb{9SIAZ?|p0pwH`*<`0zj5oS*g)krk&b5Q#uyWI2W=T_CERE35IafGt;`p?x0(3{<0oy8A{ z_poqgwv4k934EbB^+se~efHq}7hbV8J*87?ab>rgOqzBgBc*bT|IxD#mW2xI0GY?K z@zqo_q{m{qhfiHF?hJ;kW~BDm@D)4Dms*F^+Gd*IcmLcp%+VO7rpv6bHHX<8m=<%y zM9u>$ZVZxRQNfCvLV0Jz5MpkT)(8LXb`=Bl&-X&y~*-Pa^i(YJ$EA& z{bXF^_dJb1Ah`iG%a9tRjrx8@zV~n)VW1MCo966=jeR(*M8@?6@q;dpnX&~d+;oScJv@`e5V99W@!j@AixIhn|IWZ>QcIJ&ba z5U6!Q`6A8Q+!49~+qn%j_Pc!zfLH3)ImS%&CnDSTZTGdJRAzdGJF2p{qUXf8HZsy_Q18=JS z=D_hYwyxPF@AA@$l@F}vW-wy*qJ+)D?a3vMg7di<*R`Y$*nA~cs$+h9ixtzdUsXyQ2md4Psc*(_yzzHxbIlNJ5!%q&!2TDkUvcWu^>R=t;}?! z6`G&oGe~&O&aqhy{@Qj)%v0sSuJ2~YqyvzIC_V4GI1(K(RONHVvk3+Rc7Y8F9h6j$ z%Xk(Y<#pTdIX1lW5qJ%;N^0X}-J^ZsmFZm`w*Y=#$n& zbg+kuQ%pkRfy4FYD!!6X(utEkm;7VvddnMQl12^$&iaWTowUq^3#_02l78{dmn_}5 zDJgWM+I6Iw+EDy?>7ajGr+fSl(<2Ng=I;;lE-CHFo^WdtC=9|wm2PC;()qlS zp4^w|%Td(g^3jJ~4(%3{BZyh_F%x`G&dE(hSt$5{z!uXf)!8yVp?B|@oivm|-!(HF zRD*wC=(4_C^FdoAc-$zqo<`3NqkaIWQvKNKe9q-zV}{gQ3A=nlJ~VA}5y|4%DTPd! z9Vw{A&y)^!RsUU$gp{itOJzv^my_XhBKZIbsG}pp#v3svubj2EI!k4pBMwN3k83zx3aljp3} zq*>S%2z1AmrBPkO2xI-Dc^q&eH(oOtZmm^c1rBG`3u*sdK;f_7r`~sXEcBHXJNMJmy-$Ua?d(uw394NKiP*$?VU=G zxx&hhG*k>5>9o`RLsL^&KEL~}JZw?2#vGOCLblqE;mh<2j{?Q8THugtlRV5Qsuf)l z_)(A`EguYA38_EI&ZfkSZ4QEmaBL}ovN zK>a^v>=?I_Bs~YeAKlZ$t5nGpahkeXMMgX{k=zfM2Qy0bGlwn-pp2A;G8iToSUE}K zgOpp!sZ5Av*$p|*#+M+=x)%qIvKX~&siFmfa;iM7N`KcKT)HgbUk48b@*3Cmdl%%2 z8P(u0%wr+k$4{9vhti{%aN=P3oTB;Do94@*Xl!&D6KOM6d{t-|l-63)!Kt}4b!9Hk z;^`--iW%m8y>09R8?P{pJ@Jg^mC$E=@>qX|;~(-Jfx$f}nAOqr9072taZXz-=qRNm z&>=?|Mb_6xIC2mUNs2PmF?}`g(*YH~)(jmeDvg`tnAATIibk(oNisetxjgV4a%)FF z5-i9=y+*?Fx-Z=SHRMx0WCyyqlq?gTiVvm271Y4%Y=lA_K6h2Hs0_qZvQTAaeQ?ja zP&0nt@1U;)f}v#pi__?!r;;;y{R>3@MKQy@I#YW)<0uQN-d?IWmyt#jNtu@jTSbRN zB5bwJ%Sn`)@X|dip}L{ceW<*+OK>e-x{H5XH%l}vG&7A~C(Q%LFT;)v^J%E*)`>gE-1bXV5b9K4lSO<*Ua*gl!u|>871PnyUG2bZSes zeF5?u37x=fl2OZuT+T^DX4^>TM|-$7c*oyR*LulMo{y8N znpHl65`MeL7_%0ankfn{=OPjQRLthE>zb0=@KN+jdvN{A6SJ3)lgvkNm-F zNp#-!vb1|~sq+`j2IAYJ5NTJO2husIVC85pj_+gk_bdSEM4-+U@$#kreA!i zXHUkol&nF85?Cb7y*8vzw|=-J<^Q7Xy`q{5zkc1d(iiW-_CMMFnK4Nb5I6vcwZjtx%!-~RSFd!KR6#kn}wxyZy*Ht-_yODyUmWz*d3U$5_7hnn~@m`w0kz= z{EX`apLJQDvCZah(w=pfF>?u?^*liGOqrz=n^G!geMGBwU9-N$CcbmC{!R9Y4yL3S zS@_q$Empzz!mq|00^9{~K$vYN4_Z6Uh55D4FM;>EvnTkO2>^7Weom%#dbjrF<(}Z! zql^Op13exXp@NZR^lqX0#hz6uyHq+sgOnE(0YV@;m=SYUNkI>h&dI$^%j}t!OOET% zNdj#*OX&XAIU%3>>JQ$ElACDWC`V@=DW2cvUIaarlf1LYwl<6UOF}nt+Ymt}t!tZV zOab#H>QD_#kv+WGDrn>0fgi^*v;o!HU!KGh2i1MZuCBS>4`&QEt}{&p}ct z+1d+P#?yne7Svo}Wc@Ta;Snfc&EHa+7|7LDPa zbAX>1EgK+U#={xoEk)LGru7OV$!mFC(cq40?OlnO7B=QmUU@9(G|Lth9f`_~YtC=U zD;&>jMHO-#af6{Q*B1!Ad4+u|`CkteHbNvD$e1QtK}T`H#g>B0;{})hlw3mSb&`eylHlVqlV4>dg>sQy)-tTzQtXtBk<LrQ_RjXLJSL zq{c1(lEQm(RI((zS=wQ;!tbrLbdb}%rrOZj%J7?&JHV~G!72xhoU+YO@#SmF^`P?S z?C=&)i^#+q>1ZF1x8*@#wsTza4V8)`<_CT~sJpQ_!GV zDTs6iy-)oMXSyyGIq`7`0FZ#ny?XpqOReHim*U3(GR)e02z9zm|1^`Vq(RzY+b7|vF+D}wVZ8@-T4%o8?X`YXAE!wcX zQ}yRc=)KUL$sZO*0CfosbtzYMnaH|lMHOqM>Wb~^rFZI7-qopL>eb7Lnm!|1;q^DA znq2L)EVee9nCF^e8q5qD++7UvcS&b@CHXtPOeIWSCxtXvP$hGgGz%-N_iIx_8M$7 zC0-n+`ZX`V!O@sk{w9yB9v z0OQ~SQ|FfPKT#6Vi-U7%#(U#HBn^Pm03Z)Yj#E zmf0)y5=HmIuX`q~G_|RXw8b3mP(nRa7Hi+9C|aXvHw?VBs_8ni@KyF#lG==Oyv{Ah zBlTK^?fRP2Pm_}M`kN`@$(t`&Y25whq^tPju!XsWMLO9+c{{}VZjx=eMJaI$bjrf% zYX>_nWm(hGEehuzXc=`h7lDvcX|waP+S zha7u8L=2CaxpD0D^+PS!_Z?F`&~YO{^PO_$jU*eJFf1EXFVyHdc_fLlq5S2@t@Lx1 zdAWKme4nx#hwoiD9EW5*T&uLg$*!!OJW-i`;l_d98%UR5lOez2-v2x?X3czIV?2LY z)n=^A^I(01ZEi1^XV1=8!m=55@#Eda@4I)cb+bFVAb$20P*`Qurs|iGeU&#OzxJHz zMK-*@c^=#IQ}blKlznEPU2{@TbGL0nwcRCqObPp`+_>F|1-p^%+tzV+-gc$#A$9DH z%WP`7d3tlHL1ea;UQQD2!tITotYp@J>EEFTY1}8j+x9e$eJW^wpT_u`R^Rcrt>Nqe z@tG#eD&JQ!rE9%BC5O0G=5wXY;q84@aeZS$o9{F@+?B#j&N$rvGZ^=bwqg6r<4vIB z!z9OrD3!>X{>L4jE8k;EsmC9RJIU$XVx{`Bz0Y*$Bd#CoU$DqJzLulC22B?!ogW?V z(94NOIVvLZKbvmIeE9eF7z7%2>$_L~i-V3t$&5!0{WJFKYGBHUyy(>qr3^WgoH|lc zR46yi7rP0@@2JpG$t(Rj?NaRIZNd?p&U)#o7w=J!Oo~2OOtyMG;XS2s87-mUwRC*K zOsI38sfbIHSWrLJ>AmJ8=ci?H_bdfXwyydGqXPaZAWsn{=kAUURtL_X*k6$>t^fgDw5Qw1HM%N zZQE|KptIBt2vjxuDHUAV>?@!;>k>ty;?)=4doXpfKb9(}^W)3z-^UTKiF+%4K~swN(b<=yk9 z>U}0^4OvcGO8Zzw@jRv!RoopuZ<^lU5{xq?h8kqjZf%uy+1S(cT>?L9GK327$v~c+QKs%h1~2++FH{*7m<_8~B^kAKnEzeO4E7&d9OE8TD`wpUU1UBUK=~-w7T(Os2KWa-ry$dz!?eA z3`Ij(;KMlh<4C#O{s>v25b4y&%J{Np&+|<@e8+U{ z#uVkg33LDDA^TpzVdCrFL{mK|=JO(sU>=#j%7v%<#*J=?&W7iR@R#4eGAJCEmEb9qrT5#)nrAxw5?(G^teE3rfTVJ zlm6<;0sQBwld+q{761UU*=OcIiRPY;23yN71zi!$HUN46P(UoUZWJ8YEJ`%*xHNYq zQ6_;~THIy3SLy5$;u64j!}#mZUj3hm<}z!+TEE1Byly{GmIK-A4%rc3Y)FF|E({z_ zx%zO>PmjagrU=j^uLromSw0JQwq9?qs(in1#o!_QX^u*Y9#56e#2@0kR4xGJlgJ=U%MF_O?YXo%L8lpCXtCW%`VPtUJg+YEXf zNNg~C_EvW9&07aP9w5JKd``d7`~06t>X6~{&t*6IUOSqm&0K!|z5Pc2$KwZ&Ss8|W zFn@dVNw#Um*UK;deYtUa{hul0f&J6=sp<y(Mttv=!oPwQeg*n`q@JF znA5r$JJaZuy41~aPbc%T^43?{7B}zsBi@%BIuoVh_3KW^E%U05)@9?Qn|HUDB<{TM zA%IkVb28S+;?zv*Ypaf%_YyKJ&b%~wvuWn${a9Ix!qwI{j$dy+$XK`FK#k)dFBKkS zI$73BU0Lz4=((SrVcDo@{MI|LXS(W^WwXVVw|+@IGw0SVTilG_1(f&9Hal5e3cT_z zxT9z8YKB#7l=1tpnVyH&Z&_VUy7GSK*Pi)X>sH)M;|~#1y$hpG*6rn2KEzn`KDwV_ z-PvHgx;L=*@xxoz*E_DP9!Tna@_c>6x_ij@~uCdSesVh zpHAb~Ht|*XUo(;YD{iK?e3167LA-CpWslv!+4ZCrn`du>PX3;`w(EQ2zMTSRuc6sq zRXS3Sr$(!8U--JpfboRbxGjJB=Rck_;JM)=a*jQHl)zA*{kNK0edFnFwELz$WihIe22ahAE6Fw zno#dOJh>mAkpWpuu;s`NXet49BAp18Tl@Fv1^GA0a{b54UH#5MLguo?1~hJ^_w%#< zW749uiif+G#P20ASFW8#wq5`+ic=`X{q^$3YoMC>gMTT1IO6LZ7sbD&c*SoVH7$Uw z-_FhW(Xk6BBtxC_Ab4pv6Rm;uw$mT)?AD}^Nxnm3X@=X5C0GN|z(Q~oL0 zIf!XR;q<^+PDX=P07HiCW|uc)NnsqoLA8u{KbV4UZvbP&NRS5<#|I!3#;O@(6$Do9 z5O4nCh-F$BFUrUt$?>|J>|4JS8*^<-- zPp--)D0}}Gb)JKkhdlC>@jaY_95aGWbB$dHKNn&w3^6;mS!hNtw-^ zo$nwk^9ktnol@O93v=|f@BsV$B19Uub4b-`t9xJi&*5i)mH!!FPC5c?`Fy%NrCb$Z zy}gY*2tZC50Qta2y1QGD-hMGke9(ETj5J|1T8TA;1)H0G0lW zx4ZpcOxS>k2{ZVAX2Ql!65R^^`*Z>??YPt4bhn!HKbbJwq<2sMn+e0H_*mA->Lomt z-Z{~E(Mzug`1W|I^U`L$c!2jFNj{}@$*8UZ6r%my^!&+F_VZqXDNo_bK(7piBSl^V z0Di@{15az8lCHTBQM}F z;n1}asbbA-=jfaD!V=dh8&7_YiG`&0Pd8rFL>AY$0{iRsW|@W(S1xQycw~;{X_>)P zn!NYid-~Hu@Aliu60HQ=h!TtA3)URvT5!5#*U0Q*jx1;8d#-I-7|U}{+Um@?y@-Dj zxX2&wYuQrm!%5>AOGcTavLgU7SKi+}(4R<}pfnT%ss(>B zZB;=IYPDKZvGx}#TJMi9O9ptgpP3W(=OXw(_o(gS_OLy8Ei7=*5(U^VEZ>-tjcIh- zQ<^X!=c{mk7EZQCvD5iLHO}0q67!VX4%@lLX8{7`4(b-`ZM+(mkjrv|Dox+-E zyW`Z~n8ue4=l_l@%FD~f+qwAb6VA6c297D8T1_f+fo5oUhRnbHRiXI1JCZFmydYI$ zHcQoeTH?5#T7BZw+w!{^NvGf*20v#HX%dehmc}es?|3R@VAVrT7UszW#+hC$`kJe} zN<#Y>{3cF+9@}`xOH(Xe7YaO)4fD=?pgX(j zRUA{S)ugZ|AUslzwI+x%NcocR%3WdhIhJv6yGZbQyDrxHFfnpOvsfy}vM5Kkvb5!a zI>e=QA!B#mhFNTwc-uPzV8*ikf$`wK(y@c?4Q1w$*=nloTDKG%zgossoyAw@J^C9N zx#^_Uy*d4;zazyld4afLkD(tLtZBBjiDI1gSm$XW=gXK{xyVCj+mgQ3FMS7R;k!pV zgf@8*mZBQEl<@71>aBCRW&R3x*-7V>tqLOk$`Q6ia>$W8m2Cl~Cl4F0w!Q1lwjIqI zh$`xiSKHTujlf1m$Ncp9C+Ls6E4LP8&d;h(o=-b(77y3lDH`L<^2IVSk%s1N#k<}^ z!WEW4z`}|k(QL2k@dFB^cV0L;99Ky$DlM_eQ+Y2Z$cR}FlgD-qR94m=Tc!=*7( z;?%~)C}_pG#}kX~4@O?9+E1L`rS~~EGM#n6UkG&^wjs=d48^?ym3ce_-f09?ImjnS zr&|=7Ga}W7T{4@lzq}d-;Z)ry%62W$XpQ&P)Q6Ow!#U>4Cyz%+mM@5>Q`N5=uX%S2 zGNlceWEW&S#Yf&?xYjwf!8iT=A|68xpQZoIHy?MwR6ctwzZ4~3zZ=GUWGzAAk z8)@#tmqt%kbX|F*EEnFC6p-B_)5;KQrTjKn7*zbh>!Gl)JkyYWJg!UECV2yZO;X z_>XpDv60O zb(<2cn*S6IUF1322=6eW7F5b$yL-JStcIM4akQn6>ujG;U7Stj;~3GwIX-6#riYLk zk^bCM9Tk`6ujwGmYVH`YPcj3PmcYB$S6x|Z8WoOz)YY}K_s%Of3a)<&Vnr!Dn-oOg zFXub!Us;Yq1JLFS&0J+l=;bhR1$=nh6rC{?Tt%U%ikWA=6_`73Vnb)$ilU zkz=R3ZBCurJMvId&5AOc5r-vXFhfa(^9RyUhB5rE<)i;BBHmw^kVb=KC7^X#V0bRv zQxxbYl6k@)Y&sJ}f4goP?SJseP&O8yko)2R-!gUvfQ-Lj=)mJR44BTs6ccH%LiGCS zA+MhH%`q;*P1cs724M7Pyj&uL#>>_U&l<|Nt!RmK6T$ZX=gI8`ltt{e?Ek`UyJT`Z z(aJ8Y!GZtn7WLnc+s&!doa>ooOfb%`Sc_;H50JI!{vYhN5)@>InS~8V0qMJVo2Uw^ zfN{QSP<7B-UVtAwy!UnIrMb)M0ljDmIkXo2&41W!z4|=EqkL&eg>+u1 zOYAU_AXx(PkS@Bmoj#29rjREriEhrlU0>c(*o5+c8-d4kc9CgmbJ}A{00#etX)u-^ zI~rSYoFHQkmw5xm>ZDP#$i|DdOSN&$7h{j89+w5fv&6Ld;=l(pz79;=O-(wwo;aJV zW+|F^LL?>{52TjK2Dzxcit%B@rGBF!aVsJVQiYD%S4gHHibJ343K#AVq>0hY|YzUht=Ex zk2c6zUA8$88X7l5${sx_0d1t=)} z*?C;~F8NWFJ4oX>ou|Tin$7;wJ!)+F;3EUNEC)_eZ)&PiDH9$pQ#-@|a!NTNuK8(4 z%0|c!v;p9x4{9)KW1#FvFW1Li{a2dqqxS&&Zf-Nd1GC69oxsOsxvRh4bZza_TxqOc zUqo7UM--4PQBi&g*G`%I`LM^w{m*LmwhP*^A$RY3y}5}r?dwL09ZVO7+T^;+-dFvU z{!wO=$-i&2+YbKwzOd)ozaLMJeERoOkZZcW_Nw~et#3-3IP1SZ-1xNqM>uA>@%P*O z!Hs`wZ*Dt5|5|W1HUJz4KvH;r_ck(6z8r|$I1gbbWD@ohJvAr;m~bIWev*R#Q%l7l z>=S#wGR5VI;4fnuXw79pwFJ)MJ;H2KQN&*(jiEngG%%5tZLa0Q`eiIYaJe3cjd+TP z-EL#aM5t}33IQ}lAX0`5pyDZ@9$6D_LL1hop$|$QoJlXh3$K9vQY@B2Vh|0Ollj1m!b6 z`X6@t{V@vsl^*-22T#77z_K}9$3PvflZsLI(4mm;{4gV+l zJd9cR0P=J)0A=mdX={;58NvNGjegV-S7AFly!r!I~^zSYe1Sck);GP*W+NXfr2%w2S zrj4Rqd;BB(XX|b6?FF%kdCYN%3>e?t;;9gC9z=tPNAuuR21Jo$)p!;5N)}0nIi4km zUuP`KYQ_g1dG}2;A9z8Iox+|U6-UhGvBWZ%V&Z3#nSTQr5J@^??cY>E?0CIicOGQB zQ6xK75N|)^voLs{0KnzPHxUM$i|fgXl{9sHi+aA(s4z!uEfa72nTerta9rReTF)gP zw?iN~K+Q2fQ(A=Wo8xl-8Mu%HGn+Q9f66ip1vfBshIA(aE$>mAh`h_lEHz+iSpD)4KjW! zU#dm%qta}$lnyl!@{5a!B}GZN3eUr+M6}kz&Ets~?y^2d_Z*dVM*=@=L5A3p^MD$T zB#OXneWnZ8*9gEpRl70uIanFX2#HiZb!B2*Nr2uHa5(2j#{uGq)rF&v^v5Am4=4A3 z|HWB|pbzWkgvCRZqLIle6f__}x7-qkovLx)dEybnGrb;mKIDa2iTa@Q0u81wG*=BV zE81FN4nMFF2e-)ioLBy!?$tih2x*PVu&ij3YMFFLUw`HVSsRcEB)W_Stm9lr+h6#2 zAS`AoRM;04-xF5U{aeT zP7xgcXaP#mF%NmTCNebe6`)CljgL8HHsc2gh;$y(mw)Uw5_wu{&n0%cA0u6p3Ln1! z$kN0v(7~B87bp|uOFK?K0tA!90pju1DA2WKXJV88*M^J_^G>^(ox=E-D57hu5H}9s z1wxc&=+Sw`&e_=mfdt?%39iIB@^R>hRxmnkn2=uq7D`kKL;U6|{Pv)rS!C3kZAbL8u?Don;ehh1IKMdy9;;rF==pTKEeQgGJ=LFe}kIj!>qZfzgA*sA%Gqm zjUobBWT-qL;pYr+ii}bg0+*1^R&3<0A5cG<*ci!Mk^{-Kf%tLu%IN3dX+=x&@nIy$ zy*N-!h+FoA1m&0g)FdFugj^w@#y~F!_N36Ze+jfG7Xop!KsNo*H;cIJ!*The$Yuc` z%Yap}VOz6Os;?ue1WkQegD3Y6ML`6>JO(_absBk za&PQO{a5b8I-n{W9tI#;yh1g>nFnYI9IfX25P(T3yFHwzRnm*T0JbPX~cAv^obnXOdl` z-EV^Dsm6`KMxV!dmN_~9tewBlLIQ7kA_d?M9cMTf@U7VXE^x~(kztY#7;_#RA@(mGNNMvDx_S92gsRU+<;;}!jRAYXaPvjv94_Y*;mLw0%Z5fMRC|Aj-E4# zDz=XYz4NOH&V>Xkl5u1phc9L)xYYH#9`1r4m)HhbyzJK4bV3M|3yt;UU~dbsX&mUI zY)AzMayr>Hi{W#XDx1atm$d;nKn1D$ghRd`0EE)ASRNOU=Hn^}xHmlfaR4Mxfno;! z2Oax{R#A|Q{lUQBphAtQTLS3#tz3vPA0oY7Y?UV7yTLn&C5n|Y+7$1$!8!0{g7`8I zp+SPch|pIw@eu;MX`e(PFs(bdOzM|B1{zF?HsV2&L+ppU@HryP;8op+yH2{W+ivOohx__< z>HRVrgoHgI=xLfK*WhwU`iM>HO08|e^bc5f9fVfcL zuoYk~Xx9)TzcWw@oWVziVyUyJ86wP>j$Pp*tVlo|sZ(2sE;AUadpC6I4E9XLw6R-v(kVqCQ<%rV2@i5#3@$6DTnS3Y z-`j$1_@i~<PgSpsJ?&xn;t)Lj(zeexa!gsvH|_+ ze5)^{4uC9PnMUt&OuulbKXlzK_!A%bNs&Bj^fY%P){#sSkgW&~DME?04ZD z*IyQ0fgcUWAK-e!Nw66reuRWQw)(7OjR51vmlI|TN?cmUM+Mh?H68ko*#o9R{5^v0 z^JA`QbbNvkT1&)pYhD?vUn#0-SsD<1mqO#4A0 zG=n6zl?H7+joZe7-z8rD<#z{C$8*l^O)HqOs+j1AgJ=jQt`7Tt0@|JxqRQ9tdx*(5 z=vXWr!XAmSV0VkM>UQy5|2Ws@bopgEod8N155y-8N;R7b1oB&hI0QKp>3>E3X z@!HD!z#;Q25?%+!64s$0Kt(*->He>gi*=%Mi&|4M-gtIR-e9zn`o?GDp*z_4&vbF0 z9e7vX(8|BN=QodIJ>Ew1Tn9>C{@~+%ity!pNI6kVl?2Y7d3Sl|o$GhK`-IpNJKb6r zj+~_;lY5<~H@8V{JbC{w1KS4(^JrYhNzpHa8FFt&*bPTE^LOX1pewYBxH;tS z2_V1@n(|IKJn32)9^`cbyIzhSAavji!M!BDG2u(l1E;9q5V!I=yM3qL@DP7zuq`AI zv%v>0(&x^T+7A{(28j3-0WO%6=0+8Bp@k_0KlDi#Z=?NNcmT8rFmJ;UGX(JuBsB2Z z#T7Ju(+p3Vy9|dR#Z;WK-2i+Lpi^Y0U&xTdu}13MVFRD_>f_$b#Fu(L(E@c&sz{oF7Ki z@8CTQ6ie$ah=|>M{lK$Z*-F(K-aUZ12@OzxyU=E6Fb@Aaz5L`h9&S$sMC|rxvC5X# z&0jud)0UQYmh3TQXOEqAJb_RN|Mqg+z-n5)Op|g_%Q2`ZM`inu{g2OXY|ea&av6X< z@87q9P~EXcN8VVK^g6fWSK{N*TIXEVooU zzw6)V*Z0qEpLn6Vp8osA^8DC&=ikTw{riV~^T`=RDjSm_;_m#uCz8?Jfl*vC$rWwE zqPt>E(_36|HWgGiyt6Ogjo>9sb(h>S`9O5^SzA10cl$o@kl!Qyz_zC`(WuBsAdtYL z)9S}Xfzk|=J_NJy)=cH7FF2-ifXf^&B)T-`>+Stu(!OMrCz`JGT!f5`sw(6tSk$V6 zIgCMo}!@Ftq4Xs_|cDHl(TI@s( z5XR%^=fWsN??Q?YklPnTtW(!XA7|y028q*1HF`kqn1rV-1F&yK(H@G~vFfmXh7+z8 zAxmo!I1hGeFgq$sB6>Eb9px5mJIGastL+z7=hdov*_XRP3Qp=Rqf}qr(*us*96F!LtEllRBP6veZ_}+eWEv z-%@QFFe1I8l$7nu6nV;E+}1gXbHIgYdWcKCx;ZoqS{pIS1<{))VHFf5t%0G6keXjE z&+PqNa%w|@4h24aZG_UtvUf$2nNS}#l0h|O)on_^jD20a*8&R8WdN`oHT`h#ErrTbJ-{*Np14}ff4OV#72zu%iN2z0{ zY`=9bvM}v&@RRB)r@o7#u!36gfknGoZ7hq@@vSxIcAPl9*y;$To1q*S_JL3 zJh+zp#b)gs2H}_D*zgbB{j7lv>3!5Eh(aCF%?|=96JbbIs&0OAos@VITy8Lg@gZgj zeI#>yvld5WzFbmdt)Qjc+qx-mf&z>9+|BO7CXEQZ_>3e``EN4Lg|{eQAanswOGyR@ z85Y%0VTn#8Ygck~=pyRiJszI-K^JV?_UosJ~P@|#P5=4)h0Edqd%aMmM#zoouz8c&o;3P)HL}3fusgXScFF6 zoC$- zzXG`<+S~DW!1evFGwbO(aAUz#C&@~>u~iFo&+7q3%fR?nmb*T2!@$cK8Pk)%d4VZsA0e3k4 z7w-k4^){F5lrdoYc>{KNvj~Dfa63$NJu#VO)CJNOX)aRa1$Pzm4{R8RC)XF}sfOp7 zIsRoS-Lj4HaKJ@M>`S!^R}^i99V$tsG>8+RGEx$ zgD@Rq1_Z`?1hxcuBnpr+f7Q|dwlx)5c> z=7=P%Y-Izy#Pc8ygyNKGT13lor?Ft}Tggq1LW1wUp4~`prio_>+P{@SQQ5G)uzclA zk0s1zp6-6GdiEgX>R92LPBj z;$g*9TCa>Z84>NY=qu-9@IuxCYeA0{50wIM2?j9`613F*=o>m7twH~q1QUF**K`kDcrxdB-bPK zkZv4g_}C>rv)yeO@VMrRLi^nAegvZl)7`5d$Ak*(HHEz!Q6)XJOhc{>Ab_!j z5P)-bZ2CWJkmJpsrb57z1lM6Z)Ev#<_J^s+%~ar=)*}xr8!*m?=IaZbHElE9MNzyh zfG;I$qx8?|n|HG;NDzrQW_amMF@Cl;caz#vanbs-JTaHe?n>w8rsw4z%ga)=EQ04T zg4s?Uab>I-WsEH=S^zcb1Rt07ZE68;)}B*{1IKEB7?$I@6b?>;_^yfc@j!|?5EI{T zM_>ZBjN~WQhdWH2T8o<^fL(uY7ST?@8Pd&*Mb%UwC(jHiP}H~xKx`QhVG&g1kP@Pg zsRL5nY79YS0$^BtF;8ff-(Lc5+0;T45Y$+b+g1vjh^s>sgFQJzqolDtn=1X6Qd7^5$U zw{y*ISAOe$^(Ftx4)L??*g>ovK=oQ63`kmn5^Jv4|BAm16)|nBBzh(lR^olsI_~b~ z{tx0eaQU}j3`%H|pxZY8ZI<1F?eMU8nQhjH5ujd^<1HG4lgD2W?c2Trr#pRr67$1W zvPX(QpasU}fTu5sMMV?gEsRPBzgbv51eKpe&H{y*8>w-*cge#$CjGwD7nTz9WxEU5 zqe+VbbA>EFpM{~S!$KlpF_-2#YF!G3*66Bg=W1Y6w%pVL63cp*n5 zQOo}57zvCARrEEuWj_A9$OAb=keQOuo|3ehlJc064xW;UnUYPJlFOcwubfh7no{hV z5*gr?=cZJar&PaBsllg-GSlkX(;8OOnjX_y!PD9?(>f{By4llumDBo7(*|ABh9lEP zbJNDl(nnHe+f8FQ-{3y⋙F%4p7!kWYW0O5&TRF3-X~wQ=#(reRVQ$88 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 R5cIEv-+$5k|GCw!{{cM0IZprp diff --git a/plugins/hls-alternate-number-format-plugin/README.md b/plugins/hls-alternate-number-format-plugin/README.md index d72134311c..5eb90c8a69 100644 --- a/plugins/hls-alternate-number-format-plugin/README.md +++ b/plugins/hls-alternate-number-format-plugin/README.md @@ -10,7 +10,7 @@ The plugin requires no extra setup to work. Simply place your cursor on top of a ## Demo -![Alternate format suggestions](HLSInt.gif) +![Alternate format suggestions](HLSAll.gif) ### Currently Supported GHC Extensions: - `BinaryLiterals` diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index d0b684d3fc..a49ad77a4f 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -21,7 +21,7 @@ module Ide.Plugin.Conversion ( ) where import Data.Char (toUpper) -import Data.List (delete) +import Data.List (delete, dropWhileEnd) import Data.Maybe (mapMaybe) import Data.Ratio (denominator, numerator) import Data.Text (Text) @@ -165,7 +165,9 @@ generateNumDecimal val = map (toNumDecimal val) $ take 3 $ takeWhile (val >= ) $ toNumDecimal :: Integer -> Integer -> Text toNumDecimal val divisor = let (q, r) = val `quotRem` divisor numExponent = length $ filter (== '0') $ show divisor - in T.pack $ show q <> "." <> show r <> "e" <> show numExponent + -- remove unnecessary trailing zeroes from output + r' = dropWhileEnd (== '0') $ show r + in T.pack $ show q <> "." <> r' <> "e" <> show numExponent toBase :: (Num a, Ord a) => (a -> ShowS) -> String -> a -> String toBase conv header n From eb0548241d380009b4f869139ab0d18972b0bf44 Mon Sep 17 00:00:00 2001 From: Javier Neira Date: Tue, 30 Nov 2021 08:54:38 +0100 Subject: [PATCH 31/32] Add new plugins to hackage workflow --- .github/workflows/hackage.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/hackage.yml b/.github/workflows/hackage.yml index 9e399a45da..a5c143dd78 100644 --- a/.github/workflows/hackage.yml +++ b/.github/workflows/hackage.yml @@ -25,7 +25,8 @@ jobs: "hls-module-name-plugin", "hls-pragmas-plugin", "hls-refine-imports-plugin", "hls-retrie-plugin", "hls-splice-plugin", "hls-tactics-plugin", - "hls-call-hierarchy-plugin", + "hls-call-hierarchy-plugin", "hls-alternate-number-format-plugin", + "hls-qualify-imported-names-plugin", "haskell-language-server"] # Uncomment 9.0.1 when ghcide is buildable ghc: [ "9.0.1", From 7c2e1218819bbb5f18e09c383eafcf6f7bbd72ee Mon Sep 17 00:00:00 2001 From: Nick Suchecki Date: Tue, 30 Nov 2021 19:16:29 -0500 Subject: [PATCH 32/32] Fix Bug caused by Minor Bug Fix. --- .../src/Ide/Plugin/Conversion.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs index a49ad77a4f..82425668f4 100644 --- a/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs +++ b/plugins/hls-alternate-number-format-plugin/src/Ide/Plugin/Conversion.hs @@ -167,7 +167,9 @@ toNumDecimal val divisor = let (q, r) = val `quotRem` divisor numExponent = length $ filter (== '0') $ show divisor -- remove unnecessary trailing zeroes from output r' = dropWhileEnd (== '0') $ show r - in T.pack $ show q <> "." <> r' <> "e" <> show numExponent + -- but make sure there are still digits left!!! + r'' = if null r' then "0" else r' + in T.pack $ show q <> "." <> r'' <> "e" <> show numExponent toBase :: (Num a, Ord a) => (a -> ShowS) -> String -> a -> String toBase conv header n