Skip to content

Commit aec5698

Browse files
authored
Merge pull request #6163 from IntersectMBO/mgalazyn/refactor/update-cardano-cli
Update cardano-cli-10.5.0.0
2 parents df91fe8 + 6dc9cd1 commit aec5698

File tree

29 files changed

+72
-72
lines changed

29 files changed

+72
-72
lines changed

.github/workflows/haskell.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,12 @@ jobs:
120120
cat dist-newstyle/cache/plan.json | jq -r '."install-plan"[] | select(.style != "local") | .id' | sort | uniq > dependencies.txt
121121
122122
# Use a fresh cache each month
123-
- name: Store month number as environment variable used in cache version
124-
run: echo "MONTHNUM=$(date -u '+%m')" >> $GITHUB_ENV
123+
- name: Store month number and GHC version as environment variables used in cache version
124+
run: |
125+
cat <<EOF >> $GITHUB_ENV
126+
MONTHNUM=$(date -u '+%m')
127+
GHC=$(ghc --numeric-version)
128+
EOF
125129
126130
# From the dependency list we restore the cached dependencies.
127131
# We use the hash of `dependencies.txt` as part of the cache key because that will be stable
@@ -134,10 +138,10 @@ jobs:
134138
${{ steps.setup-haskell.outputs.cabal-store }}
135139
dist-newstyle
136140
key:
137-
cache-${{ env.CABAL_CACHE_VERSION }}-${{ runner.os }}-${{ matrix.ghc }}-${{ env.MONTHNUM }}-${{ hashFiles('dependencies.txt') }}
141+
cache-${{ env.CABAL_CACHE_VERSION }}-${{ runner.os }}-${{ env.GHC }}-${{ env.MONTHNUM }}-${{ hashFiles('dependencies.txt') }}
138142
# try to restore previous cache from this month if there's no cache for the dependencies set
139143
restore-keys: |
140-
cache-${{ env.CABAL_CACHE_VERSION }}-${{ runner.os }}-${{ matrix.ghc }}-${{ env.MONTHNUM }}-
144+
cache-${{ env.CABAL_CACHE_VERSION }}-${{ runner.os }}-${{ env.GHC }}-${{ env.MONTHNUM }}-
141145
142146
# Now we install the dependencies. If the cache was found and restored in the previous step,
143147
# this should be a no-op, but if the cache key was not found we need to build stuff so we can
@@ -180,7 +184,7 @@ jobs:
180184
if: ${{ failure() }}
181185
uses: actions/upload-artifact@v4
182186
with:
183-
name: failed-test-workspaces-${{ matrix.sys.os }}-ghc${{ matrix.ghc }}-cabal${{ matrix.cabal }}.tgz
187+
name: failed-test-workspaces-${{ matrix.sys.os }}-ghc${{ env.GHC }}-cabal${{ matrix.cabal }}.tgz
184188
path: ${{ runner.temp }}/workspaces.tgz
185189

186190
- name: "Tar artifacts"
@@ -211,7 +215,7 @@ jobs:
211215
if: ${{ always() }}
212216
continue-on-error: true
213217
with:
214-
name: chairman-test-artifacts-${{ matrix.sys.os }}-${{ matrix.ghc }}
218+
name: chairman-test-artifacts-${{ matrix.sys.os }}-${{ env.GHC }}
215219
path: ${{ runner.temp }}/chairman/
216220

217221
# Uncomment the following back in for debugging. Remember to launch a `pwsh` from

bench/plutus-scripts-bench/plutus-scripts-bench.cabal

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ library
8282
-- IOG dependencies
8383
--------------------------
8484
build-depends:
85-
, cardano-api ^>=10.8
86-
, plutus-ledger-api ^>=1.37
87-
, plutus-tx ^>=1.37
88-
, plutus-tx-plugin ^>=1.37
85+
, cardano-api ^>=10.11
86+
, plutus-ledger-api ^>=1.40
87+
, plutus-tx ^>=1.40
88+
, plutus-tx-plugin ^>=1.40
8989

9090
------------------------
9191
-- Non-IOG dependencies

bench/tx-generator/src/Cardano/Benchmarking/OuroborosImports.hs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@ module Cardano.Benchmarking.OuroborosImports
2222
, submitTxToNodeLocal
2323
) where
2424

25-
import Prelude
25+
import Cardano.Api (BlockType (..), ConsensusModeParams (..), EpochSlots (..),
26+
LocalNodeConnectInfo (..), NetworkId (..), PaymentKey, SigningKey, SocketPath,
27+
TxInMode, TxValidationErrorInCardanoMode, protocolInfo, submitTxToNodeLocal)
2628

29+
import Cardano.CLI.Type.Common (SigningKeyFile)
30+
import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis)
31+
import Cardano.Node.Configuration.Logging (LoggingLayer)
32+
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))
2733
import Ouroboros.Consensus.Block.Abstract
2834
import qualified Ouroboros.Consensus.Cardano as Consensus
2935
import Ouroboros.Consensus.Config (TopLevelConfig, configBlock, configCodec)
@@ -32,15 +38,7 @@ import Ouroboros.Consensus.Node (ProtocolInfo (..))
3238
import Ouroboros.Consensus.Shelley.Eras (StandardCrypto, StandardShelley)
3339
import Ouroboros.Network.Protocol.LocalTxSubmission.Type (SubmitResult (..))
3440

35-
import Cardano.Node.Configuration.Logging (LoggingLayer)
36-
import Cardano.Node.Protocol.Types (SomeConsensusProtocol (..))
37-
38-
import Cardano.CLI.Types.Common (SigningKeyFile)
39-
40-
import Cardano.Api (BlockType (..), ConsensusModeParams (..), EpochSlots (..),
41-
LocalNodeConnectInfo (..), NetworkId (..), PaymentKey, SigningKey, SocketPath,
42-
TxInMode, TxValidationErrorInCardanoMode, protocolInfo, submitTxToNodeLocal)
43-
import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis)
41+
import Prelude
4442

4543
type CardanoBlock = Consensus.CardanoBlock StandardCrypto
4644

bench/tx-generator/src/Cardano/Api/Internal/ProtocolParameters.hs renamed to bench/tx-generator/src/Cardano/TxGenerator/ProtocolParameters.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ cardano-api
1818
- - https://github.com/IntersectMBO/cardano-api/pull/729
1919
--}
2020

21-
module Cardano.Api.Internal.ProtocolParameters
21+
module Cardano.TxGenerator.ProtocolParameters
2222
( -- * The updatable protocol parameters
2323
ProtocolParameters (
2424
ProtocolParameters

bench/tx-generator/src/Cardano/TxGenerator/Setup/NixService.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ module Cardano.TxGenerator.Setup.NixService
2323

2424
import Cardano.Api (AnyCardanoEra, mapFile)
2525

26-
import Cardano.CLI.Types.Common (FileDirection (..), SigningKeyFile)
26+
import Cardano.CLI.Type.Common (FileDirection (..), SigningKeyFile)
2727
import qualified Cardano.Ledger.Coin as L
2828
import Cardano.Node.Configuration.NodeAddress (NodeAddress' (..),
2929
NodeHostIPv4Address (..), NodeIPv4Address)

bench/tx-generator/src/Cardano/TxGenerator/Setup/SigningKey.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ module Cardano.TxGenerator.Setup.SigningKey
1111
)
1212
where
1313

14-
import Data.Bifunctor (first)
15-
import qualified Data.ByteString as BS (ByteString)
16-
import Data.ByteString.Base16 as Base16 (decode)
17-
1814
import Cardano.Api
19-
import Cardano.CLI.Types.Common (SigningKeyFile)
2015

16+
import Cardano.CLI.Type.Common (SigningKeyFile)
2117
import Cardano.TxGenerator.Types (TxGenError (..))
2218

19+
import Data.Bifunctor (first)
20+
import qualified Data.ByteString as BS (ByteString)
21+
import Data.ByteString.Base16 as Base16 (decode)
22+
2323

2424
parseSigningKeyTE :: TextEnvelope -> Either TxGenError (SigningKey PaymentKey)
2525
parseSigningKeyTE

bench/tx-generator/tx-generator.cabal

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ library
5353
-- TODO: switch back to -Wwarn=deprecations having dropped Cardano.Api.ProtocolParameters.ProtocolParameters in favour of Cardano.Api.Ledger.PParams
5454
-Wno-deprecations
5555

56-
exposed-modules: Cardano.Api.Internal.ProtocolParameters
57-
Cardano.Benchmarking.Command
56+
exposed-modules: Cardano.Benchmarking.Command
5857
Cardano.Benchmarking.Compiler
5958
Cardano.Benchmarking.GeneratorTx
6059
Cardano.Benchmarking.GeneratorTx.NodeToNode
@@ -79,6 +78,7 @@ library
7978
Cardano.TxGenerator.Fund
8079
Cardano.TxGenerator.FundQueue
8180
Cardano.TxGenerator.Genesis
81+
Cardano.TxGenerator.ProtocolParameters
8282
Cardano.TxGenerator.PureExample
8383
Cardano.TxGenerator.Script.Types
8484
Cardano.TxGenerator.Setup.NixService
@@ -107,9 +107,9 @@ library
107107
, attoparsec-aeson
108108
, base16-bytestring
109109
, bytestring
110-
, cardano-api ^>= 10.8
110+
, cardano-api ^>= 10.11
111111
, cardano-binary
112-
, cardano-cli ^>= 10.4
112+
, cardano-cli ^>= 10.5
113113
, cardano-crypto-class
114114
, cardano-crypto-wrapper
115115
, cardano-data

cabal.project

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ repository cardano-haskell-packages
1313
-- See CONTRIBUTING for information about these, including some Nix commands
1414
-- you need to run if you change them
1515
index-state:
16-
, hackage.haskell.org 2025-03-13T00:45:00Z
17-
, cardano-haskell-packages 2025-03-13T02:33:54Z
16+
, hackage.haskell.org 2025-03-18T07:42:38Z
17+
, cardano-haskell-packages 2025-03-24T17:03:41Z
1818

1919
packages:
2020
cardano-node

cardano-node-chairman/cardano-node-chairman.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,5 @@ test-suite chairman-tests
8989
ghc-options: -threaded -rtsopts "-with-rtsopts=-N -T"
9090

9191
build-tool-depends: cardano-node:cardano-node
92-
, cardano-cli:cardano-cli ^>= 10.4
92+
, cardano-cli:cardano-cli ^>= 10.5
9393
, cardano-node-chairman:cardano-node-chairman

cardano-node/cardano-node.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ library
146146
, async
147147
, base16-bytestring
148148
, bytestring
149-
, cardano-api ^>= 10.8
149+
, cardano-api ^>= 10.11.1
150150
, cardano-crypto-class
151151
, cardano-crypto-wrapper
152152
, cardano-git-rev ^>=0.2.2
@@ -252,7 +252,7 @@ test-suite cardano-node-test
252252
, bytestring
253253
, cardano-crypto-class
254254
, cardano-crypto-wrapper
255-
, cardano-api:{cardano-api, internal}
255+
, cardano-api
256256
, cardano-ledger-core
257257
, cardano-node
258258
, cardano-slotting

cardano-node/test/Test/Cardano/Config/Mainnet.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Test.Cardano.Config.Mainnet
77
) where
88

99
import Cardano.Api (File (..), initialLedgerState)
10-
import Cardano.Api.Error (displayError)
10+
import Cardano.Api.Internal.Error (displayError)
1111

1212
import Control.Monad.Trans.Except
1313
import qualified Data.Aeson as J

cardano-submit-api/cardano-submit-api.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ library
3939
, aeson
4040
, async
4141
, bytestring
42-
, cardano-api ^>= 10.8
42+
, cardano-api ^>= 10.11
4343
, cardano-binary
44-
, cardano-cli ^>= 10.4
44+
, cardano-cli ^>= 10.5
4545
, cardano-crypto-class ^>= 2.1.2
4646
, http-media
4747
, iohk-monitoring

cardano-submit-api/src/Cardano/TxSubmit/CLI/Parsers.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module Cardano.TxSubmit.CLI.Parsers
1010
import Cardano.Api (File (..), SocketPath)
1111

1212
import Cardano.CLI.Environment (EnvCli (..))
13-
import Cardano.CLI.EraBased.Options.Common
13+
import Cardano.CLI.EraBased.Common.Option
1414
import Cardano.TxSubmit.CLI.Types (ConfigFile (..), TxSubmitNodeParams (..))
1515
import Cardano.TxSubmit.Rest.Parsers (pWebserverConfig)
1616

cardano-testnet/cardano-testnet.cabal

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ library
3535
, aeson-pretty
3636
, ansi-terminal
3737
, bytestring
38-
, cardano-api ^>= 10.8
39-
, cardano-cli:{cardano-cli, cardano-cli-test-lib} ^>= 10.4
38+
, cardano-api ^>= 10.11
39+
, cardano-cli:{cardano-cli, cardano-cli-test-lib} ^>= 10.5
4040
, cardano-crypto-class
4141
, cardano-crypto-wrapper
4242
, cardano-git-rev ^>= 0.2.2
@@ -222,7 +222,7 @@ test-suite cardano-testnet-test
222222
, async
223223
, base16-bytestring
224224
, bytestring
225-
, cardano-api:{cardano-api, internal}
225+
, cardano-api
226226
, cardano-cli:{cardano-cli, cardano-cli-test-lib}
227227
, cardano-crypto-class
228228
, cardano-ledger-conway

cardano-testnet/src/Parsers/Cardano.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Parsers.Cardano
77
import Cardano.Api (AnyShelleyBasedEra (AnyShelleyBasedEra), EraInEon (..))
88

99
import Cardano.CLI.Environment
10-
import Cardano.CLI.EraBased.Options.Common hiding (pNetworkId)
10+
import Cardano.CLI.EraBased.Common.Option hiding (pNetworkId)
1111

1212
import Prelude
1313

cardano-testnet/src/Parsers/Help.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module Parsers.Help
55
, runHelpOptions
66
) where
77

8-
import Cardano.CLI.EraBased.Options.Common
8+
import Cardano.CLI.EraBased.Common.Option
99

1010
import Control.Monad (forM_)
1111
import qualified Data.List as List

cardano-testnet/src/Parsers/Version.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module Parsers.Version
66
, runVersionOptions
77
) where
88

9-
import Cardano.CLI.EraBased.Options.Common
9+
import Cardano.CLI.EraBased.Common.Option
1010
import Cardano.Git.Rev (gitRev)
1111

1212
import qualified Data.Text as T

cardano-testnet/src/Testnet/TestQueryCmds.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module Testnet.TestQueryCmds
88
, forallQueryCommands
99
) where
1010

11-
import Cardano.CLI.EraBased.Commands.Query (QueryCmds (..))
11+
import Cardano.CLI.EraBased.Query.Command (QueryCmds (..))
1212

1313
import Testnet.TestEnumGenerator (genAllConstructorsList, genTestType)
1414

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/KesPeriodInfo.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module Cardano.Testnet.Test.Cli.KesPeriodInfo
1313

1414
import Cardano.Api as Api
1515

16-
import Cardano.CLI.Types.Output
16+
import Cardano.CLI.Type.Output
1717
import Cardano.Node.Configuration.Topology
1818
import Cardano.Testnet
1919
import Cardano.Testnet.Test.Misc

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Query.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ module Cardano.Testnet.Test.Cli.Query
1313
( hprop_cli_queries
1414
) where
1515

16-
import Cardano.Api
16+
import Cardano.Api as Api
1717
import Cardano.Api.Experimental (Some (..))
18-
import qualified Cardano.Api.Genesis as Api
18+
import Cardano.Api.Internal.Genesis as Api
1919
import Cardano.Api.Ledger (Coin (Coin), EpochInterval (EpochInterval), StandardCrypto,
2020
extractHash, unboundRational)
2121
import qualified Cardano.Api.Ledger as L
2222
import Cardano.Api.Shelley (StakeCredential (StakeCredentialByKey), StakePoolKey)
2323

24-
import Cardano.CLI.Types.Key (VerificationKeyOrFile (VerificationKeyFilePath),
24+
import Cardano.CLI.Type.Key (VerificationKeyOrFile (VerificationKeyFilePath),
2525
readVerificationKeyOrFile)
26-
import Cardano.CLI.Types.Output (QueryTipLocalStateOutput)
26+
import Cardano.CLI.Type.Output (QueryTipLocalStateOutput)
2727
import Cardano.Crypto.Hash (hashToStringAsHex)
2828
import qualified Cardano.Ledger.BaseTypes as L
2929
import Cardano.Ledger.Core (valueTxOutL)

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ import Cardano.Api
1212
import qualified Cardano.Api.Ledger as L
1313
import Cardano.Api.Shelley
1414

15-
import Cardano.CLI.Types.Common
15+
import Cardano.CLI.Type.Common
1616
import Cardano.Crypto.Hash.Class (hashToStringAsHex)
1717
import qualified Cardano.Ledger.Core as L
18-
1918
import Cardano.Testnet
2019

2120
import Prelude

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Transaction/RegisterDeregisterStakeAddress.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ module Cardano.Testnet.Test.Cli.Transaction.RegisterDeregisterStakeAddress
99
) where
1010

1111
import Cardano.Api as Api
12-
import Cardano.Api.Address (StakeCredential (..), toShelleyStakeCredential)
12+
import Cardano.Api.Internal.Address (StakeCredential (..), toShelleyStakeCredential)
1313

14-
import Cardano.CLI.Types.Key (SomeSigningKey (AStakeSigningKey))
14+
import Cardano.CLI.Type.Key (SomeSigningKey (AStakeSigningKey))
1515
import qualified Cardano.Ledger.UMap as L
1616
import Cardano.Testnet
1717

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/DRepActivity.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ module Cardano.Testnet.Test.Gov.DRepActivity
1111
) where
1212

1313
import Cardano.Api as Api
14-
import Cardano.Api.Eon.ShelleyBasedEra (ShelleyLedgerEra)
1514
import Cardano.Api.Experimental (Some (..))
1615
import Cardano.Api.Ledger (EpochInterval (EpochInterval, unEpochInterval), drepExpiry)
16+
import Cardano.Api.Shelley (ShelleyLedgerEra)
1717

1818
import Cardano.Ledger.Conway.Core (EraGov, curPParamsGovStateL)
1919
import Cardano.Ledger.Conway.PParams (ConwayEraPParams, ppDRepActivityL)

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/InfoAction.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ module Cardano.Testnet.Test.Gov.InfoAction
1212
) where
1313

1414
import Cardano.Api as Api
15-
import Cardano.Api.Error (displayError)
15+
import Cardano.Api.Internal.Error
1616
import Cardano.Api.Ledger (EpochInterval (EpochInterval))
1717
import Cardano.Api.Shelley
1818

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/PredefinedAbstainDRep.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ module Cardano.Testnet.Test.Gov.PredefinedAbstainDRep
1010
) where
1111

1212
import Cardano.Api as Api
13-
import Cardano.Api.Eon.ShelleyBasedEra (ShelleyLedgerEra)
1413
import Cardano.Api.Experimental (Some (..))
1514
import Cardano.Api.Ledger (EpochInterval (EpochInterval))
15+
import Cardano.Api.Shelley (ShelleyLedgerEra)
1616

1717
import Cardano.Ledger.Conway.Core (ppNOptL)
1818
import Cardano.Ledger.Conway.Governance (ConwayGovState, cgsCurPParamsL)

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/TreasuryWithdrawal.hs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ module Cardano.Testnet.Test.Gov.TreasuryWithdrawal
1414
) where
1515

1616
import Cardano.Api
17-
import Cardano.Api.Ledger (EpochInterval (EpochInterval), KeyRole (Staking),
18-
StandardCrypto)
19-
import Cardano.Api.ReexposeLedger (Coin, Credential)
17+
import Cardano.Api.Ledger (Coin, Credential, EpochInterval (EpochInterval),
18+
KeyRole (Staking), StandardCrypto)
2019

2120
import qualified Cardano.Ledger.BaseTypes as L
2221
import qualified Cardano.Ledger.Coin as L

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Misc.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ module Cardano.Testnet.Test.Misc where
33

44
import Cardano.Api (docToString)
55

6-
import Cardano.CLI.EraBased.Run.Query (renderOpCertIntervalInformation)
7-
import Cardano.CLI.Types.Common
8-
import Cardano.CLI.Types.Output
6+
import Cardano.CLI.EraBased.Query.Run (renderOpCertIntervalInformation)
7+
import Cardano.CLI.Type.Common
8+
import Cardano.CLI.Type.Output
99

1010
import Prelude
1111

0 commit comments

Comments
 (0)