{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}

-- | This file is generated by "plutus-preprocessor:plutus-preprocessor"
module Test.Cardano.Ledger.Plutus.Examples (
  alwaysSucceedsNoDatum,
  alwaysSucceedsWithDatum,
  alwaysFailsNoDatum,
  alwaysFailsWithDatum,
  redeemerSameAsDatum,
  evenDatum,
  evenRedeemerNoDatum,
  evenRedeemerWithDatum,
  purposeIsWellformedNoDatum,
  purposeIsWellformedWithDatum,
  datumIsWellformed,
  inputsOutputsAreNotEmptyNoDatum,
  inputsOutputsAreNotEmptyWithDatum,
  inputsOverlapsWithRefInputs,
) where

import Cardano.Ledger.Plutus.Language (Plutus (..), PlutusBinary (..), SLanguage (..))
import Data.ByteString (ByteString)
import qualified Data.ByteString.Base16 as Base16 (decode)
import qualified Data.ByteString.Short as SBS (toShort)
import GHC.Stack

decodeHexPlutus :: HasCallStack => ByteString -> Plutus l
decodeHexPlutus :: forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus = ([Char] -> Plutus l)
-> (ByteString -> Plutus l) -> Either [Char] ByteString -> Plutus l
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either [Char] -> Plutus l
forall a. HasCallStack => [Char] -> a
error (PlutusBinary -> Plutus l
forall (l :: Language). PlutusBinary -> Plutus l
Plutus (PlutusBinary -> Plutus l)
-> (ByteString -> PlutusBinary) -> ByteString -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShortByteString -> PlutusBinary
PlutusBinary (ShortByteString -> PlutusBinary)
-> (ByteString -> ShortByteString) -> ByteString -> PlutusBinary
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ShortByteString
SBS.toShort) (Either [Char] ByteString -> Plutus l)
-> (ByteString -> Either [Char] ByteString)
-> ByteString
-> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Either [Char] ByteString
Base16.decode

-- | Script that always succeeds, unless arguments are malformed or context contains a datum
alwaysSucceedsNoDatum :: SLanguage l -> Plutus l
alwaysSucceedsNoDatum :: forall (l :: Language). SLanguage l -> Plutus l
alwaysSucceedsNoDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "6bd534d263a1213113b775e4e8386e47e6181a33e40ab3ea623b5fe8"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysSucceedsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                          {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                          scriptPurpose_3 -> case scriptPurpose_3 of
    --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                              _ -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"582d01000033333222222253330053370e900118039baa30033006300437540022c224002aae755d12b9a5573c"
      , ByteString
"ae85"
      ]
    -- ScriptHash "a98c0f498abacf6dea126d707b1ba5cc27e523c20929ec0ac705087f"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysSucceedsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                          {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                          scriptPurpose_3 -> case scriptPurpose_3 of
    --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                              _ -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"582d01000033333222222253330053370e900118039baa30033006300437540022c224002aae755d12b9a5573c"
      , ByteString
"ae85"
      ]
    -- ScriptHash "b1d5bc8ced627156f403786ad7c281dcc510735957aa364fb9376d85"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysSucceedsNoDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                    scriptInfo_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
    --                                  in PlutusTx.Prelude.check GHC.Base.$ (case scriptInfo_4 of
    --                                                                        {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                         (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                         _ -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"588f0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8c8ca4d6600"
      , ByteString
"266e1d2000002894004c02000515980099b874800800a250028b2012402400324a14a230070023009001375460"
      , ByteString
"08600e600a00314a28030dd5191919191803980500198030011802801180380098021baa0018a4d13263300249"
      , ByteString
"010350543500800200a1"
      ]
    -- ScriptHash "db4ef572cd39dd8ad9e5d91325990e8c895384ec6323ce40e5af0856"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysSucceedsNoDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                    scriptInfo_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
    --                                  in PlutusTx.Prelude.check GHC.Base.$ (case scriptInfo_4 of
    --                                                                        {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                         (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                         _ -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"588f0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8c8ca4d6600"
      , ByteString
"266e1d2000002894004c02000515980099b874800800a250028b2012402400324a14a230070023009001375460"
      , ByteString
"08600e600a00314a28030dd5191919191803980500198030011802801180380098021baa0018a4d13263300249"
      , ByteString
"010350543500800200a1"
      ]

-- | Script that always succeeds, unless arguments are malformed or context does not contain a datum
alwaysSucceedsWithDatum :: SLanguage l -> Plutus l
alwaysSucceedsWithDatum :: forall (l :: Language). SLanguage l -> Plutus l
alwaysSucceedsWithDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "8b4702c463ab040a4a40c07f6509113e4627777bdd758d28e1a0d038"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysSucceedsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                          {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                 {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"5833010000333332222222253330063370e900118041baa30043007300537540022240022646a002002caae755"
      , ByteString
"d12b9a5573cae841"
      ]
    -- ScriptHash "39cbd07a196c241b6cb2f9b74748021cfbf4d5c972371b770961635f"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysSucceedsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                          {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                 {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"5833010000333332222222253330063370e900118041baa30043007300537540022240022646a002002caae755"
      , ByteString
"d12b9a5573cae841"
      ]
    -- ScriptHash "96aebdd3eccef1bab31331a0248f2e7352ef54c541b5a13db5a4a0cf"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysSucceedsWithDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                      (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                      scriptPurpose_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
    --                                    in PlutusTx.Prelude.check GHC.Base.$ (case scriptPurpose_4 of
    --                                                                          {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                           (GHC.Maybe.Just _) -> GHC.Types.True;
    --                                                                           _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"588f0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8c8ca4d6600"
      , ByteString
"266e1d2000002894004c02000515980099b874800800a250028b2012402400324a34a030070023009001375460"
      , ByteString
"08600e600a00314a08030dd5191919191803980500198030011802801180380098021baa0018a4d13263300249"
      , ByteString
"010350543500800200a1"
      ]
    -- ScriptHash "4915d77dbf2b4def9f08cdd03494a61e01682e59b911a8c5c10ad21c"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                              PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysSucceedsWithDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                      (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                      scriptPurpose_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
    --                                    in PlutusTx.Prelude.check GHC.Base.$ (case scriptPurpose_4 of
    --                                                                          {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                           (GHC.Maybe.Just _) -> GHC.Types.True;
    --                                                                           _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"588f0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8c8ca4d6600"
      , ByteString
"266e1d2000002894004c02000515980099b874800800a250028b2012402400324a34a030070023009001375460"
      , ByteString
"08600e600a00314a08030dd5191919191803980500198030011802801180380098021baa0018a4d13263300249"
      , ByteString
"010350543500800200a1"
      ]

-- | Script that always fails, unless arguments are malformed or context contains a datum
alwaysFailsNoDatum :: SLanguage l -> Plutus l
alwaysFailsNoDatum :: forall (l :: Language). SLanguage l -> Plutus l
alwaysFailsNoDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "f9a6538bd9f37acb481ad68164b230ca1120ffe9e80c0c43dbcfc809"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                         PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysFailsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.fromBuiltinData redeemer_1 of
    --                                             {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                              GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_2 of
    --                                                                                                        {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                        (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> GHC.Tuple.Prim.();
    --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                        _) -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"582d01000033333222222253330053370e900118039baa30033006300437540022240022caae755d12b9a5573c"
      , ByteString
"ae85"
      ]
    -- ScriptHash "b59fa1404727374ea47698b98af590b5914fdcc0270c3f7efc16b229"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                         PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysFailsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.fromBuiltinData redeemer_1 of
    --                                             {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                              GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_2 of
    --                                                                                                        {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                        (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> GHC.Tuple.Prim.();
    --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                        _) -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"582d01000033333222222253330053370e900118039baa30033006300437540022240022caae755d12b9a5573c"
      , ByteString
"ae85"
      ]
    -- ScriptHash "c319009e5f76b963bfff7d37fa437135ba6ccb342f3b482965c4ccb2"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                         PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysFailsNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
    --                                                                 {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                 (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                                                                 scriptInfo_4) -> case scriptInfo_4 of
    --                                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.True;
    --                                                                                                                                                   _ -> GHC.Types.False};
    --                                                                  GHC.Maybe.Nothing -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"587e0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00524a34a0300900137546008600"
      , ByteString
"e600a00314a08030dd518019803180318021baa0018a4d1326330024910350543500800200a1"
      ]
    -- ScriptHash "661a1bdf376dedb0917a07dae24f77e50afbadbdfccab0d44de46faa"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                         PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysFailsNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
    --                                                                 {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                 (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                                                                 scriptInfo_4) -> case scriptInfo_4 of
    --                                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.True;
    --                                                                                                                                                   _ -> GHC.Types.False};
    --                                                                  GHC.Maybe.Nothing -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"587e0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00524a34a0300900137546008600"
      , ByteString
"e600a00314a08030dd518019803180318021baa0018a4d1326330024910350543500800200a1"
      ]

-- | Script that always fails, unless arguments are malformed or context does not contain a datum
alwaysFailsWithDatum :: SLanguage l -> Plutus l
alwaysFailsWithDatum :: forall (l :: Language). SLanguage l -> Plutus l
alwaysFailsWithDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "6c8f5c35d35af805fba76f8f2f45d1b1d50e5c9d5f84017290391fef"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysFailsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.fromBuiltinData datum_1 of
    --                                                       {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                        GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.fromBuiltinData redeemer_2 of
    --                                                                                                               {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                                GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_3 of
    --                                                                                                                                                                          {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                                                                          (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                                                                          _) -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"582e010000333332222222253330063370e900118041baa30043007300537540022c224002aae755d12b9a5573"
      , ByteString
"cae841"
      ]
    -- ScriptHash "11d7df2781d1aeabd368404485d865cc4119037762e645e64e5c1fbe"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- alwaysFailsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.fromBuiltinData datum_1 of
    --                                                       {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                        GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.fromBuiltinData redeemer_2 of
    --                                                                                                               {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                                GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_3 of
    --                                                                                                                                                                          {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
    --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                                                                          (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                                                                          _) -> GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"582e010000333332222222253330063370e900118041baa30043007300537540022c224002aae755d12b9a5573"
      , ByteString
"cae841"
      ]
    -- ScriptHash "f4d4c7784c77c4088eecc6555e6192897571ca00c455d18f51f993cf"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysFailsWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
    --                                                                   {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                   (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                                                                   scriptInfo_4) -> case scriptInfo_4 of
    --                                                                                                                                                    {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                                     (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                                                                                                     _ -> GHC.Types.True};
    --                                                                    GHC.Maybe.Nothing -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"587e0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00524a14a2300900137546008600"
      , ByteString
"e600a00314a28030dd518019803180318021baa0018a4d1326330024910350543500800200a1"
      ]
    -- ScriptHash "f1336849f636a41b266e32bd1446b84c38a5b9a9daeceac3a8cd65f1"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                           PlutusTx.Builtins.Internal.BuiltinUnit
    -- alwaysFailsWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
    --                                                                   {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                   (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
    --                                                                                                                                   scriptInfo_4) -> case scriptInfo_4 of
    --                                                                                                                                                    {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                                     (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                                                                                                     _ -> GHC.Types.True};
    --                                                                    GHC.Maybe.Nothing -> GHC.Types.True})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"587e0101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00524a14a2300900137546008600"
      , ByteString
"e600a00314a28030dd518019803180318021baa0018a4d1326330024910350543500800200a1"
      ]

-- | Script that succeeds whenever redeemer equals to the datum
-- Fails on malformed arguments
redeemerSameAsDatum :: SLanguage l -> Plutus l
redeemerSameAsDatum :: forall (l :: Language). SLanguage l -> Plutus l
redeemerSameAsDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "3a606c41da185837b770050bccb6e0e2bfb760db6b954b5730cc9b01"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- redeemerSameAsDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                      {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | r_5 PlutusTx.Eq.Class.== d_4 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"583d010000333332222222253330063370e900118041baa30043007300537540022a66600c66ebc00800c44800"
      , ByteString
"4584c8d4004005955ceaba25734aae795d09"
      ]
    -- ScriptHash "1d0d4abdbcae53cdcbd324a6174dc8d7d2242c7c8e065446ec660603"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- redeemerSameAsDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                      {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | r_5 PlutusTx.Eq.Class.== d_4 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"583d010000333332222222253330063370e900118041baa30043007300537540022a66600c66ebc00800c44800"
      , ByteString
"4584c8d4004005955ceaba25734aae795d09"
      ]
    -- ScriptHash "30ab7b71ec2794d18c1159b6d551394578b6741ad5f406a66495351c"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinUnit
    -- redeemerSameAsDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                  (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                   (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> datum_4 PlutusTx.Eq.Class.== redeemer_3;
    --                                                                   _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"58870101009800aab9daba2ab9aaab9eaba1ab9c48888889660026464b30013370e90011804800c4c8ca4d6600"
      , ByteString
"266e1d2000001894004c02000515980099b8748008006250028b20124024601000523375e002601000b4a0300a"
      , ByteString
"0013754600a6010600c00314a08038dd518021803800980318021baa0018a4d132633002490103505435008002"
      , ByteString
"00a1"
      ]
    -- ScriptHash "dc85702665c38bf34e2260acec40d9ae974fc75a9711515ad42a0323"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinUnit
    -- redeemerSameAsDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                  (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                   (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> datum_4 PlutusTx.Eq.Class.== redeemer_3;
    --                                                                   _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"58870101009800aab9daba2ab9aaab9eaba1ab9c48888889660026464b30013370e90011804800c4c8ca4d6600"
      , ByteString
"266e1d2000001894004c02000515980099b8748008006250028b20124024601000523375e002601000b4a0300a"
      , ByteString
"0013754600a6010600c00314a08038dd518021803800980318021baa0018a4d132633002490103505435008002"
      , ByteString
"00a1"
      ]

-- | Script that succeeds whenever Integer datum is supplied and it's value is even.
-- Fails on malformed arguments
evenDatum :: SLanguage l -> Plutus l
evenDatum :: forall (l :: Language). SLanguage l -> Plutus l
evenDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "35f1f24a16ca2801411a77e95128734c7307ca22f403d7af9776547f"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                            {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                               {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                               (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI d_4) 2 PlutusTx.Eq.Class.== 0 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                             | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"5844010000333332222222253330063370e900118041baa30043007300537540022a66600c66e1d20003370c6e"
      , ByteString
"b400d2004112001161323500100165573aae895cd2ab9e5743"
      ]
    -- ScriptHash "f2c500c3a0a5ff2a1e847b803abc65b2c20c2b9ba411dbc9339bd90c"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                            {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                               {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                               (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI d_4) 2 PlutusTx.Eq.Class.== 0 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                             | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"5844010000333332222222253330063370e900118041baa30043007300537540022a66600c66e1d20003370c6e"
      , ByteString
"b400d2004112001161323500100165573aae895cd2ab9e5743"
      ]
    -- ScriptHash "3503ca2febe4dad8fbd9fd4e2fd8b1c7f39d8916e2ef47c323a254ce"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                        {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                        _redeemer_3
    --                                                                                                        (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                         (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI datum_4) 2 PlutusTx.Eq.Class.== 0})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"58910101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00523370e900019b86375a002900"
      , ByteString
"24ca4006002618048009baa3004300730050018994800c004c8030dd518019803180318021baa0018a4d132633"
      , ByteString
"0024910350543500800200a1"
      ]
    -- ScriptHash "114059408e1fb8bef941af760b2c8e86299f8a33097c382f2b85fb6c"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                        {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                        _redeemer_3
    --                                                                                                        (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                         (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI datum_4) 2 PlutusTx.Eq.Class.== 0})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"58910101009800aab9daba2ab9aaab9eaba1ab9c488888896600264b30013370e90011804000c4c8ca4d660026"
      , ByteString
"6e1d2000001894004c01c00515980099b8748008006250028b20104020600e00523370e900019b86375a002900"
      , ByteString
"24ca4006002618048009baa3004300730050018994800c004c8030dd518019803180318021baa0018a4d132633"
      , ByteString
"0024910350543500800200a1"
      ]

-- | Script that succeeds whenever Integer redeemer is supplied and it's value is even
-- Fails on malformed arguments or whenever datum is present in the context
evenRedeemerNoDatum :: SLanguage l -> Plutus l
evenRedeemerNoDatum :: forall (l :: Language). SLanguage l -> Plutus l
evenRedeemerNoDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "5f7ede70b1b9ac720d0a63fddc39dc727a706f53fe5898a68afe254d"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenRedeemerNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                              {PlutusLedgerApi.V1.Scripts.Redeemer r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                          {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                          scriptPurpose_4 -> case scriptPurpose_4 of
    --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                              _ -> if PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_3) 2 PlutusTx.Eq.Class.== 0
    --                                                                                                                                                                    then GHC.Tuple.Prim.()
    --                                                                                                                                                                    else PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"583f01000033333222222253330053370e900118039baa30033006300437540022c2a66600a66e1d20003370c6"
      , ByteString
"eb40092004112001165573aae895cd2ab9e57421"
      ]
    -- ScriptHash "ddeba040ae64532a549a3ab42ebecf38dc6738590ba828130bd855ab"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenRedeemerNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                              {PlutusLedgerApi.V1.Scripts.Redeemer r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                          {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                          scriptPurpose_4 -> case scriptPurpose_4 of
    --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                              _ -> if PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_3) 2 PlutusTx.Eq.Class.== 0
    --                                                                                                                                                                    then GHC.Tuple.Prim.()
    --                                                                                                                                                                    else PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"583f01000033333222222253330053370e900118039baa30033006300437540022c2a66600a66e1d20003370c6"
      , ByteString
"eb40092004112001165573aae895cd2ab9e57421"
      ]
    -- ScriptHash "b52db3a5ea3dddeee36249fdbb1dbf9c91e987a7e7b364c0e08cf817"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenRedeemerNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                  scriptInfo_4 -> case scriptInfo_4 of
    --                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                                                                                   _ -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.Class.== 0}})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"58950101009800aab9daba2ab9aaab9eaba1ab9c4888888966002646464b30013370e9001180500144c8ca4d66"
      , ByteString
"00266e1d2000001894004c02400515980099b8748008006250028b20144028601200524a1300349860160026ea"
      , ByteString
"8c018c024c01c00a2600293201023370e900019b86375a600c00690021baa30043007001300630043754003149"
      , ByteString
"a264c6600492010350543500800200a1"
      ]
    -- ScriptHash "6a4057d1e1bac44090459ed837d447751599c88a06656eb34cb06e24"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                          PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenRedeemerNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                  scriptInfo_4 -> case scriptInfo_4 of
    --                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.False;
    --                                                                                                                                   _ -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.Class.== 0}})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"58950101009800aab9daba2ab9aaab9eaba1ab9c4888888966002646464b30013370e9001180500144c8ca4d66"
      , ByteString
"00266e1d2000001894004c02400515980099b8748008006250028b20144028601200524a1300349860160026ea"
      , ByteString
"8c018c024c01c00a2600293201023370e900019b86375a600c00690021baa30043007001300630043754003149"
      , ByteString
"a264c6600492010350543500800200a1"
      ]

-- | Script that succeeds whenever Integer redeemer is supplied and it's value is even
-- Fails on malformed arguments or whenever datum is missing from the context
evenRedeemerWithDatum :: SLanguage l -> Plutus l
evenRedeemerWithDatum :: forall (l :: Language). SLanguage l -> Plutus l
evenRedeemerWithDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "005ad178b8202f5cf5df94ff456c85450537238601c1dc4600e7148b"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenRedeemerWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                        {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_4) 2 PlutusTx.Eq.Class.== 0 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"5844010000333332222222253330063370e900118041baa30043007300537540022a66600c66e1d20003370c6e"
      , ByteString
"b40092004112001161323500100165573aae895cd2ab9e5743"
      ]
    -- ScriptHash "a6791013d91614944a6b54b707763139260fb1cdcdeba3c1b7b78cf4"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- evenRedeemerWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                        {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
    --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_4) 2 PlutusTx.Eq.Class.== 0 -> GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"5844010000333332222222253330063370e900118041baa30043007300537540022a66600c66e1d20003370c6e"
      , ByteString
"b40092004112001161323500100165573aae895cd2ab9e5743"
      ]
    -- ScriptHash "4b6ad32f7a22928e887d4eef62295aa90d20451b374729f63df5e95c"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenRedeemerWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                    {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                    (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                     (GHC.Maybe.Just _)) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.Class.== 0;
    --                                                                     _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"588e0101009800aab9daba2ab9aaab9eaba1ab9c48888889660026464b30013370e90011804800c4c8ca4d6600"
      , ByteString
"266e1d2000001894004c02000515980099b8748008006250028b20124024601000523370e900019b86375a6010"
      , ByteString
"00a90025280c028004dd5180298041803000c528200e37546008600e002600c60086ea800629344c98cc009241"
      , ByteString
"0350543500800200a1"
      ]
    -- ScriptHash "4229b5baecde6188ee10417c7ff06c733225069e862e292cf27d3fc1"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                            PlutusTx.Builtins.Internal.BuiltinUnit
    -- evenRedeemerWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                    {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
    --                                                                                                                    (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
    --                                                                                                                                                                     (GHC.Maybe.Just _)) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.Class.== 0;
    --                                                                     _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"588e0101009800aab9daba2ab9aaab9eaba1ab9c48888889660026464b30013370e90011804800c4c8ca4d6600"
      , ByteString
"266e1d2000001894004c02000515980099b8748008006250028b20124024601000523370e900019b86375a6010"
      , ByteString
"00a90025280c028004dd5180298041803000c528200e37546008600e002600c60086ea800629344c98cc009241"
      , ByteString
"0350543500800200a1"
      ]

-- | Script that succeeds when datum is not expected and purpose arguments are validated against txInfo
-- Fails on malformed arguments
purposeIsWellformedNoDatum :: SLanguage l -> Plutus l
purposeIsWellformedNoDatum :: forall (l :: Language). SLanguage l -> Plutus l
purposeIsWellformedNoDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "310918097581287d2c2a519462e4be9a0e50f758f4af7edba5ccf105"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                 PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- purposeIsWellformedNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                                  {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_4
    --                                                                                                                                                  scriptPurpose_5 -> case scriptPurpose_5 of
    --                                                                                                                                                                     {PlutusLedgerApi.V1.Data.Contexts.Minting cs_6 -> if PlutusTx.Data.AssocMap.member cs_6 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoMint txInfo_4)
    --                                                                                                                                                                                                                        then GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                        else PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Rewarding stakingCredential_7 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((stakingCredential_7 PlutusTx.Eq.Class.==) GHC.Base.. Data.Tuple.fst) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoWdrl txInfo_4)
    --                                                                                                                                                                                                                                         then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         else GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Certifying dCert_8 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (dCert_8 PlutusTx.Eq.Class.==) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoDCert txInfo_4)
    --                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                              else GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"5901fc0100003333333322222222223232323232323232533300e3370e90000008a99980719198008009998028"
      , ByteString
"0411111111110039311980225023330103375e6ea4dd718071807804180a000925123300300300110021615333"
      , ByteString
"00e3370e90010008b099299980799b874801000854ccc03cc048cccc0048cc01cdd5000911a99980919b874800"
      , ByteString
"000848c8c848cc00400c008dd69809180a80118088008b00091a8009119ba548000cc050008cc050dd4000a5eb"
      , ByteString
"808cdd7980718078041a800910011998028041111111111002930b08018a99980799b874801800854ccc03cc04"
      , ByteString
"8cccc004800480048cdd7980718078040009998028041111111111003130b08018991a800800b1111911801000"
      , ByteString
"9918008009119980425eb8088c94ccc058c0180044c8cc064c020008004cc0140140084cc014014008c01c0080"
      , ByteString
"04c044014480048894ccc02c004400c4cc008c030004c03c004888c8c8c8c8c8c8c8c8c8cccccccccc02cdd618"
      , ByteString
"0a0049bac30140083756602800e6eacc050018dd6180a0029bac30140043014003375860280046eb0c050004cc"
      , ByteString
"034dd5180a180b800911a99980c19b874800000848dd7180b8008b000980b000980a800980a000980980098090"
      , ByteString
"0098088009808000980780098061baa0032233001300f002300a0023754600c6012004600a002600a6ea800555"
      , ByteString
"ceaba35740ae895cd2ab9e5742aae7c1"
      ]
    -- ScriptHash "316aa8a6e1a55f18d96458559eb9ce4330fb9b3066cd8fdaef3d1742"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                 PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- purposeIsWellformedNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                                  {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
    --                                                                                                                                                  scriptPurpose_5 -> case scriptPurpose_5 of
    --                                                                                                                                                                     {PlutusLedgerApi.V1.Data.Contexts.Minting cs_6 -> if PlutusTx.Data.AssocMap.member cs_6 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoMint txInfo_4)
    --                                                                                                                                                                                                                        then GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                        else PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Rewarding stakingCredential_7 -> if PlutusTx.Data.AssocMap.member stakingCredential_7 GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoWdrl txInfo_4
    --                                                                                                                                                                                                                                         then GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                         else PlutusTx.Builtins.error GHC.Tuple.Prim.();
    --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Certifying dCert_8 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (dCert_8 PlutusTx.Eq.Class.==) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoDCert txInfo_4)
    --                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                              else GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"5901b50100003333333322222222223232323232323232533300e3370e90000008a999807199801ba9375c6018"
      , ByteString
"601a00c66600a00e4444444444440104c20042c2a66601c66e1d2002001161533300e3370e90020008a9998071"
      , ByteString
"998019000980618068031998028039111111111110031308010b099299980799b874801800854ccc03cc048c00"
      , ByteString
"4ccc01802088888888888801c9858400c4c8d40040058c8c00400488ccc0192f5c044a66602466ebcc040c0440"
      , ByteString
"280084cc050008cc0100100044cc010010004004c04401448004888c8cc0040040088cc01528119980819baf30"
      , ByteString
"05004301400124a2466006006002444a66601400220062660046016002601c0024446464646464646464646464"
      , ByteString
"66666666666601a6eb0c05402cdd6180a8051bac30150093756602a0106eacc05401cdd6180a8031bab3015005"
      , ByteString
"30150043758602a0066eacc054008dd5980a800991a99980c19b8748000c07000448dd7180b8008b180b8009ba"
      , ByteString
"a3015301800130170013016001301500130140013013001301200130110013010001300f001300e001300b3754"
      , ByteString
"0066ea8c018c024008c014004c014dd5000aab9d5746ae815d12b9a5573cae8555cf81"
      ]
    -- ScriptHash "d23d266927a22839c801aadf6f9e96a5b6f02d65e68dcedbad432c91"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                 PlutusTx.Builtins.Internal.BuiltinUnit
    -- purposeIsWellformedNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                         {PlutusLedgerApi.V3.Data.Contexts.ScriptContext (PlutusLedgerApi.V3.Data.Contexts.TxInfo {PlutusLedgerApi.V3.Data.Contexts.txInfoMint = infoMint_2,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoInputs = infoInputs_3,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoWdrl = infoWdrl_4,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoTxCerts = infoTxCerts_5,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoVotes = infoVotes_6})
    --                                                                                                                         _redeemer_7
    --                                                                                                                         scriptInfo_8 -> case scriptInfo_8 of
    --                                                                                                                                         {PlutusLedgerApi.V3.Data.Contexts.MintingScript cs_9 -> PlutusTx.Data.AssocMap.member cs_9 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V3.Data.MintValue.mintValueMinted infoMint_2);
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_10
    --                                                                                                                                                                                          mDatum_11 -> case mDatum_11 of
    --                                                                                                                                                                                                       {GHC.Maybe.Just _ -> GHC.Types.False;
    --                                                                                                                                                                                                        GHC.Maybe.Nothing -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter ((txOutRef_10 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) infoInputs_3};
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.RewardingScript cred_12 -> PlutusTx.Data.AssocMap.member cred_12 infoWdrl_4;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.CertifyingScript _idx_13
    --                                                                                                                                                                                            txCert_14 -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter (txCert_14 PlutusTx.Eq.Class.==) infoTxCerts_5;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.VotingScript voter_15 -> PlutusTx.Data.AssocMap.member voter_15 infoVotes_6;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.ProposingScript _idx_16
    --                                                                                                                                                                                           _propProc_17 -> GHC.Types.True}})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"5902420101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f4888888888966002646464646464646464b"
      , ByteString
"30013370e9000000c66002ea66eb8c034c038012653001237560032374c00323259800980a800c600518008009"
      , ByteString
"0124c005d6c8dd4000c96600266e2120000018c00400518012024800a0049bab300e0084004444646002002466"
      , ByteString
"00e97adef6c6029300330053013001911980c19bb0301a003300600233004004001919801801800900244c9660"
      , ByteString
"0266e1d2002002899191949acc004cdc3a4000003128009809000a2b30013370e9001000c4a00516404c8098c0"
      , ByteString
"4800a4942602d300120019000c8cdd79809002180918099baa0019bac301100c401030160013754601e6024002"
      , ByteString
"601e00b15980099b874801000a33001200198071807802cdd5980700320068acc004cdc3a400c0051323014980"
      , ByteString
"09000c8006466ebcc040c04c0080066eb0c03c0210021807802c56600266e1d20080028cc0048006601c601e00"
      , ByteString
"b3756601c60226022602260226022602200c801a2b30013370e900500144c9289807802c4ca400600264040808"
      , ByteString
"10102020404044464460040026460020024530014bd70488c966002600c0031323301a30080020013300500500"
      , ByteString
"2899802802801202e3007002800a010403c6024006444646600200200446600a940a600266ebcc014010c05800"
      , ByteString
"64946466006006002809088966002003100389980118068009808000a016375460126018601800a60160026014"
      , ByteString
"0026012601260126012002600c6ea8c014004c014dd5000c526899319801a4810350543500800200c1"
      ]
    -- ScriptHash "d1dfb5363b89f71dd2e8ab2871e322cf7a210443fd79a75c8db98b3b"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                 PlutusTx.Builtins.Internal.BuiltinUnit
    -- purposeIsWellformedNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                         {PlutusLedgerApi.V3.Data.Contexts.ScriptContext (PlutusLedgerApi.V3.Data.Contexts.TxInfo {PlutusLedgerApi.V3.Data.Contexts.txInfoMint = infoMint_2,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoInputs = infoInputs_3,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoWdrl = infoWdrl_4,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoTxCerts = infoTxCerts_5,
    --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoVotes = infoVotes_6})
    --                                                                                                                         _redeemer_7
    --                                                                                                                         scriptInfo_8 -> case scriptInfo_8 of
    --                                                                                                                                         {PlutusLedgerApi.V3.Data.Contexts.MintingScript cs_9 -> PlutusTx.Data.AssocMap.member cs_9 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V3.Data.MintValue.mintValueMinted infoMint_2);
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_10
    --                                                                                                                                                                                          mDatum_11 -> case mDatum_11 of
    --                                                                                                                                                                                                       {GHC.Maybe.Just _ -> GHC.Types.False;
    --                                                                                                                                                                                                        GHC.Maybe.Nothing -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter ((txOutRef_10 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) infoInputs_3};
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.RewardingScript cred_12 -> PlutusTx.Data.AssocMap.member cred_12 infoWdrl_4;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.CertifyingScript _idx_13
    --                                                                                                                                                                                            txCert_14 -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter (txCert_14 PlutusTx.Eq.Class.==) infoTxCerts_5;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.VotingScript voter_15 -> PlutusTx.Data.AssocMap.member voter_15 infoVotes_6;
    --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.ProposingScript _idx_16
    --                                                                                                                                                                                           _propProc_17 -> GHC.Types.True}})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"5902420101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f4888888888966002646464646464646464b"
      , ByteString
"30013370e9000000c66002ea66eb8c034c038012653001237560032374c00323259800980a800c600518008009"
      , ByteString
"0124c005d6c8dd4000c96600266e2120000018c00400518012024800a0049bab300e0084004444646002002466"
      , ByteString
"00e97adef6c6029300330053013001911980c19bb0301a003300600233004004001919801801800900244c9660"
      , ByteString
"0266e1d2002002899191949acc004cdc3a4000003128009809000a2b30013370e9001000c4a00516404c8098c0"
      , ByteString
"4800a4942602d300120019000c8cdd79809002180918099baa0019bac301100c401030160013754601e6024002"
      , ByteString
"601e00b15980099b874801000a33001200198071807802cdd5980700320068acc004cdc3a400c0051323014980"
      , ByteString
"09000c8006466ebcc040c04c0080066eb0c03c0210021807802c56600266e1d20080028cc0048006601c601e00"
      , ByteString
"b3756601c60226022602260226022602200c801a2b30013370e900500144c9289807802c4ca400600264040808"
      , ByteString
"10102020404044464460040026460020024530014bd70488c966002600c0031323301a30080020013300500500"
      , ByteString
"2899802802801202e3007002800a010403c6024006444646600200200446600a940a600266ebcc014010c05800"
      , ByteString
"64946466006006002809088966002003100389980118068009808000a016375460126018601800a60160026014"
      , ByteString
"0026012601260126012002600c6ea8c014004c014dd5000c526899319801a4810350543500800200c1"
      ]

-- | Script that succeeds when datum is expected and purpose arguments are validated against txInfo
-- Fails on malformed arguments
purposeIsWellformedWithDatum :: SLanguage l -> Plutus l
purposeIsWellformedWithDatum :: forall (l :: Language). SLanguage l -> Plutus l
purposeIsWellformedWithDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "1a5803245ddeb98d19fbf2ae1f90339b343b6a066802dd3e3d68bd57"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- purposeIsWellformedWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                               {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                   {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending txOutRef_6) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_6 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V1.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_5)
    --                                                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                                              else GHC.Tuple.Prim.();
    --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"588b0100003333333322222222222323232533300a3370e900118070010a999805180698009bac300830093754"
      , ByteString
"60100062c2240022c64600200244a666010002297ae013232533300d3375e6016601800a601660186ea80084cc"
      , ByteString
"03c008cc0100100044cc010010004c034008c024004dd51803180480098031baa0015573aae8d5d02ba25734aa"
      , ByteString
"e795d0aab9f1"
      ]
    -- ScriptHash "ccff92c490e4f9cf0f13bde67708b15cc45ddc06bd2bc83000b718d7"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- purposeIsWellformedWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                               {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                   {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending txOutRef_6) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_6 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V2.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_5)
    --                                                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                                              else GHC.Tuple.Prim.();
    --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"588b0100003333333322222222222323232533300a3370e900118070010a999805180698009bac300830093754"
      , ByteString
"60100062c2240022c64600200244a666010002297ae013232533300d3375e6016601800a601660186ea80084cc"
      , ByteString
"03c008cc0100100044cc010010004c034008c024004dd51803180480098031baa0015573aae8d5d02ba25734aa"
      , ByteString
"e795d0aab9f1"
      ]
    -- ScriptHash "bf94295770505ecc07ab0a9668cd594928c2df57d5624f9780fc48ca"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinUnit
    -- purposeIsWellformedWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                           {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                           _redeemer_3
    --                                                                                                                           (PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_4
    --                                                                                                                                                                            (GHC.Maybe.Just _)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_4 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2));
    --                                                                            _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"58dc0101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f48888888889660026464b30013370e9001180"
      , ByteString
"6000c4c8c8c8ca4d6600266e1d2000001894004c02c00515980099b8748008006250028b201840306016005298"
      , ByteString
"00980818021bac300b300c3754601600f4a14a2806a940601e0026ea8c020c02c008c8c004004896600200314b"
      , ByteString
"d7044c8c96600266ebcc02c014c02cc030dd500144cc03c008cc0100100062660080080028068c034008c02400"
      , ByteString
"50071803800c52820103754600a60106010002600a6ea800629344c98cc00d24010350543500800200c1"
      ]
    -- ScriptHash "1095f034a16bf17d2dd69578873bd4602e31cabca2b83e12ce291d82"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                   PlutusTx.Builtins.Internal.BuiltinUnit
    -- purposeIsWellformedWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                           {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                           _redeemer_3
    --                                                                                                                           (PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_4
    --                                                                                                                                                                            (GHC.Maybe.Just _)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_4 PlutusTx.Eq.Class.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2));
    --                                                                            _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"58dc0101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f48888888889660026464b30013370e9001180"
      , ByteString
"6000c4c8c8c8ca4d6600266e1d2000001894004c02c00515980099b8748008006250028b201840306016005298"
      , ByteString
"00980818021bac300b300c3754601600f4a14a2806a940601e0026ea8c020c02c008c8c004004896600200314b"
      , ByteString
"d7044c8c96600266ebcc02c014c02cc030dd500144cc03c008cc0100100062660080080028068c034008c02400"
      , ByteString
"50071803800c52820103754600a60106010002600a6ea800629344c98cc00d24010350543500800200c1"
      ]

-- | Script that succeeds when datum is expected and datum is validated against txInfo
-- Fails on malformed arguments
datumIsWellformed :: SLanguage l -> Plutus l
datumIsWellformed :: forall (l :: Language). SLanguage l -> Plutus l
datumIsWellformed =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "23d031d07c0cc209d7acfd89746c1ff4fc8602ad77d49f5910ae39bb"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- datumIsWellformed_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                    {datum'_4@(PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                   {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_6
    --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending _txOutRef_7) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((datum'_4 PlutusTx.Eq.Class.==) GHC.Base.. Data.Tuple.snd) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoData txInfo_6)
    --                                                                                                                                                                                                                                                               then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                                               else GHC.Tuple.Prim.();
    --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"58cd01000033333333222222222223253330083370e900118061baa3006300900115333008300b323300100137"
      , ByteString
"58600e6014601460146014601460146014601460106ea8c01c008894ccc01c00452f5c026464a66601866ebc02"
      , ByteString
"0c004880044c8cc03cc00888cdd2a4000660226ea4008cc0440052f5c00026600800800426600800800464a6a6"
      , ByteString
"6601866e1d200030100011232321233001003002300c300f002375c60160022c60160026ea8c024008c02c0045"
      , ByteString
"844800458c018dd5000aab9d5746ae815d12b9a5573cae8555cf81"
      ]
    -- ScriptHash "237b0b6613cdc7b29f5a6adbe82d8725ca05c4f4e1f1f01abf4c579c"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- datumIsWellformed_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                    {datum'_4@(PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                   {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_6
    --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending _txOutRef_7) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum'_4 PlutusTx.Eq.Class.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoData txInfo_6))
    --                                                                                                                                                                                                                                                               then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                                                               else GHC.Tuple.Prim.();
    --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"58b40100003333333322222222232322232533300a3370e900118071baa3008300b0011533300a300d30043233"
      , ByteString
"00100137566012601860186018601860186018601860186018601860146ea8c0240088cc0192f5c0446601e601"
      , ByteString
"8004660060060022c2240022c60106ea8004c8c00400488ccc00d2f5c044a66601466ebc0180084cc030008cc0"
      , ByteString
"100100044cc0100100040048894ccc014004400c4cc008c018004c02400555ceaba35740ae895cd2ab9e5742aa"
      , ByteString
"e7c1"
      ]
    -- ScriptHash "104049022783cc13fa1ef04f4e440b3b335dca736bfca2d5e58613c0"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinUnit
    -- datumIsWellformed_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                _redeemer_3
    --                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                 (GHC.Maybe.Just datum_5)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum_5 PlutusTx.Eq.Class.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoData txInfo_2)));
    --                                                                 _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"5901090101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f48888888889660026464b30013370e90011"
      , ByteString
"806000c4c8c964d6600266e1d2000001894004c02400515980099b8748008006250028b2014402860120052323"
      , ByteString
"2198009808180099198008009bab300c300f300f300f300f300f300f300f300f300f300f300d37546018010466"
      , ByteString
"00697ae02233012300f00233003003001a50a5140346460020024530014bd704896600266ebc01800a26602400"
      , ByteString
"4660080080031330040040014041001400c444b30010018801c4cc008c030004c03c00500a45280c034004dd51"
      , ByteString
"80318049803800c52820103754600a60106010002600a6ea800629344c98cc00d2410350543500800200c1"
      ]
    -- ScriptHash "4db6ad0d7c934e52a2ad91a02f46a8ca85db838c9125830de70a4548"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                        PlutusTx.Builtins.Internal.BuiltinUnit
    -- datumIsWellformed_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                _redeemer_3
    --                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                 (GHC.Maybe.Just datum_5)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum_5 PlutusTx.Eq.Class.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoData txInfo_2)));
    --                                                                 _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"5901090101009800aab9daba3aba0aba2ab9aaab9eaba1ab9caab9f48888888889660026464b30013370e90011"
      , ByteString
"806000c4c8c964d6600266e1d2000001894004c02400515980099b8748008006250028b2014402860120052323"
      , ByteString
"2198009808180099198008009bab300c300f300f300f300f300f300f300f300f300f300f300d37546018010466"
      , ByteString
"00697ae02233012300f00233003003001a50a5140346460020024530014bd704896600266ebc01800a26602400"
      , ByteString
"4660080080031330040040014041001400c444b30010018801c4cc008c030004c03c00500a45280c034004dd51"
      , ByteString
"80318049803800c52820103754600a60106010002600a6ea800629344c98cc00d2410350543500800200c1"
      ]

-- | Script that succeeds when inputs and outputs are not empty validated against txInfo
-- Fails on malformed arguments and also if inputs or outputs are empty
inputsOutputsAreNotEmptyNoDatum :: SLanguage l -> Plutus l
inputsOutputsAreNotEmptyNoDatum :: forall (l :: Language). SLanguage l -> Plutus l
inputsOutputsAreNotEmptyNoDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "526f728822269856b3073428f1a799d99d4941ff2787b73630f83188"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                      PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- inputsOutputsAreNotEmptyNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                          {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                                       {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_4
    --                                                                                                                                                       _scriptPurpose_5 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_4) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoOutputs txInfo_4)
    --                                                                                                                                                                            then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                            else GHC.Tuple.Prim.()}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"58c3010000333333222222225333005325333006300833001222222222200a2614a22601066002444444444401"
      , ByteString
"24c4464646464646464646466666666660166eb0c038024dd618070041bab300e0073756601c00c6eb0c038014"
      , ByteString
"dd6180700218070019bac300e0023758601c002646a66602266e1d2000301400112375c60200022c60200026ea"
      , ByteString
"8c038c044004c040004c03c004c038004c034004c030004c02c004c028004c024004c018dd5180298031baa003"
      , ByteString
"161120015573aae8d5d12b9a5573cae841"
      ]
    -- ScriptHash "ff4a9660ba106beb662f384f2ddee1d9cb9af6da41bc344a967b110e"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                      PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- inputsOutputsAreNotEmptyNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
    --                                                          {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
    --                                                                                                       {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
    --                                                                                                                                                       _scriptPurpose_5 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_4) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoOutputs txInfo_4)
    --                                                                                                                                                                            then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                            else GHC.Tuple.Prim.()}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"58da01000033333322222222533300532533300630083300122222222222200c2614a226010660024444444444"
      , ByteString
"440144c44646464646464646464646466666666666601a6eb0c04002cdd618080051bac3010009375660200106"
      , ByteString
"eacc04001cdd618080031bab30100053010004375860200066eacc040008dd59808000991a99980999b8748000"
      , ByteString
"c05800448dd718090008b18090009baa30103013001301200130110013010001300f001300e001300d001300c0"
      , ByteString
"01300b001300a001300900130063754600a600c6ea800c5844800555ceaba35744ae6955cf2ba101"
      ]
    -- ScriptHash "c465ef62805c5363f5b1397b15cc4c363ca9e81fbc08199e79596893"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                      PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOutputsAreNotEmptyNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                              _redeemer_3
    --                                                                                                                              (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                               (GHC.Maybe.Just _)) -> GHC.Types.False;
    --                                                                               PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                              _redeemer_6
    --                                                                                                                              _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"59016b0101009800aab9daba3aba2ab9aaab9eaba1ab9c4888888896600264646464b30013370e90011806001c"
      , ByteString
"4ca4cc00c8004c020c02c00649426004930c02000e2600293201229800992cc004c030cc004888888888888888"
      , ByteString
"80409a29462601866002444444444444444401c4c805088c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8ca60026eb0c06"
      , ByteString
"40426eb0c06403e6eb0c06403a6eb4c0640366eacc0640326eb0c06402e6eacc06402a60320133758603201137"
      , ByteString
"56603200f3756603200d375c603200b3756603200937586032007300130190029800980c980e0012024301375a"
      , ByteString
"603400260320026030002602e002602c002602a00260280026026002602400260220026020002601e002601c00"
      , ByteString
"2601a00260146ea8c02401a9429450091119191acc004cdc3a40000031280098029805000a2b30013370e90010"
      , ByteString
"00c4a00516402c8058c028008c034004dd50009baa30043007300700130043754003149a264c66004921035054"
      , ByteString
"3500800200a1"
      ]
    -- ScriptHash "6b7c8e284404b37e8824a7ab0c2d95e70a450c90d632a5d883d61a1a"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                      PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOutputsAreNotEmptyNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                              _redeemer_3
    --                                                                                                                              (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                               (GHC.Maybe.Just _)) -> GHC.Types.False;
    --                                                                               PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                              _redeemer_6
    --                                                                                                                              _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"59016b0101009800aab9daba3aba2ab9aaab9eaba1ab9c4888888896600264646464b30013370e90011806001c"
      , ByteString
"4ca4cc00c8004c020c02c00649426004930c02000e2600293201229800992cc004c030cc004888888888888888"
      , ByteString
"80409a29462601866002444444444444444401c4c805088c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8ca60026eb0c06"
      , ByteString
"40426eb0c06403e6eb0c06403a6eb4c0640366eacc0640326eb0c06402e6eacc06402a60320133758603201137"
      , ByteString
"56603200f3756603200d375c603200b3756603200937586032007300130190029800980c980e0012024301375a"
      , ByteString
"603400260320026030002602e002602c002602a00260280026026002602400260220026020002601e002601c00"
      , ByteString
"2601a00260146ea8c02401a9429450091119191acc004cdc3a40000031280098029805000a2b30013370e90010"
      , ByteString
"00c4a00516402c8058c028008c034004dd50009baa30043007300700130043754003149a264c66004921035054"
      , ByteString
"3500800200a1"
      ]

-- | Script that succeeds when inputs and outputs are not empty validated against txInfo
-- Fails on malformed arguments and also if inputs or outputs are empty
inputsOutputsAreNotEmptyWithDatum :: SLanguage l -> Plutus l
inputsOutputsAreNotEmptyWithDatum :: forall (l :: Language). SLanguage l -> Plutus l
inputsOutputsAreNotEmptyWithDatum =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    -- ScriptHash "3c36ec8cc20dc74bea68e39c3a70eab3b377093ad5cba1b7014b07ab"
    -- Preprocessed PlutusV1 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- inputsOutputsAreNotEmptyWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                                    {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                           {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                        {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                                                                                        _scriptPurpose_6 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoOutputs txInfo_5)
    --                                                                                                                                                                                                                             then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                             else GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV1 ->
      [ ByteString
"58c30100003333332222222225333006325333007300933001222222222200a2614a2260126600244444444440"
      , ByteString
"124c4464646464646464646466666666660166eb0c03c024dd618078041bab300f0073756601e00c6eb0c03c01"
      , ByteString
"4dd6180780218078019bac300f0023758601e002646a66602466e1d2000301500112375c60220022c60220026e"
      , ByteString
"a8c03cc048004c044004c040004c03c004c038004c034004c030004c02c004c028004c01cdd5180318039baa00"
      , ByteString
"3161120015573aae8d5d12b9a5573cae85"
      ]
    -- ScriptHash "c527a8104a4b1f5481a5c00935f1e0cffee55ceefbea1ed2f5629f23"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- inputsOutputsAreNotEmptyWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
    --                                                                    {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
    --                                                                                                           {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                                                                                                        {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                                                                                        _scriptPurpose_6 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoOutputs txInfo_5)
    --                                                                                                                                                                                                                             then PlutusTx.Builtins.error GHC.Tuple.Prim.()
    --                                                                                                                                                                                                                             else GHC.Tuple.Prim.()}}}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"58da010000333333222222222533300632533300730093300122222222222200c2614a22601266002444444444"
      , ByteString
"4440144c44646464646464646464646466666666666601a6eb0c04402cdd618088051bac301100937566022010"
      , ByteString
"6eacc04401cdd618088031bab30110053011004375860220066eacc044008dd59808800991a99980a19b874800"
      , ByteString
"0c05c00448dd718098008b18098009baa301130140013013001301200130110013010001300f001300e001300d"
      , ByteString
"001300c001300b001300a00130073754600c600e6ea800c5844800555ceaba35744ae6955cf2ba11"
      ]
    -- ScriptHash "d94dc3fab6664e25ecd92926f0344cd770be0d0c029c6998ad4a581a"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOutputsAreNotEmptyWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                _redeemer_3
    --                                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                                 (GHC.Maybe.Nothing)) -> GHC.Types.False;
    --                                                                                 PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                _redeemer_6
    --                                                                                                                                _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"59016b0101009800aab9daba3aba2ab9aaab9eaba1ab9c4888888896600264646464b30013370e90011806001c"
      , ByteString
"4ca4cc00c8004c020c02c00646006935280c02000e2600293201229800992cc004c030cc004888888888888888"
      , ByteString
"80409a29462601866002444444444444444401c4c805088c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8ca60026eb0c06"
      , ByteString
"40426eb0c06403e6eb0c06403a6eb4c0640366eacc0640326eb0c06402e6eacc06402a60320133758603201137"
      , ByteString
"56603200f3756603200d375c603200b3756603200937586032007300130190029800980c980e0012024301375a"
      , ByteString
"603400260320026030002602e002602c002602a00260280026026002602400260220026020002601e002601c00"
      , ByteString
"2601a00260146ea8c02401a9429450091119191acc004cdc3a40000031280098029805000a2b30013370e90010"
      , ByteString
"00c4a00516402c8058c028008c034004dd50009baa30043007300700130043754003149a264c66004921035054"
      , ByteString
"3500800200a1"
      ]
    -- ScriptHash "3ba32da84d93c5b1bd4bf2b664634da819b510d2778e5053ab893a5c"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                        PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOutputsAreNotEmptyWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
    --                                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
    --                                                                                                                                _redeemer_3
    --                                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
    --                                                                                                                                                                                 (GHC.Maybe.Nothing)) -> GHC.Types.False;
    --                                                                                 PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
    --                                                                                                                                _redeemer_6
    --                                                                                                                                _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"59016b0101009800aab9daba3aba2ab9aaab9eaba1ab9c4888888896600264646464b30013370e90011806001c"
      , ByteString
"4ca4cc00c8004c020c02c00646006935280c02000e2600293201229800992cc004c030cc004888888888888888"
      , ByteString
"80409a29462601866002444444444444444401c4c805088c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8ca60026eb0c06"
      , ByteString
"40426eb0c06403e6eb0c06403a6eb4c0640366eacc0640326eb0c06402e6eacc06402a60320133758603201137"
      , ByteString
"56603200f3756603200d375c603200b3756603200937586032007300130190029800980c980e0012024301375a"
      , ByteString
"603400260320026030002602e002602c002602a00260280026026002602400260220026020002601e002601c00"
      , ByteString
"2601a00260146ea8c02401a9429450091119191acc004cdc3a40000031280098029805000a2b30013370e90010"
      , ByteString
"00c4a00516402c8058c028008c034004dd50009baa30043007300700130043754003149a264c66004921035054"
      , ByteString
"3500800200a1"
      ]

-- | Script that succeeds only if any the inputs also appears in the reference inputs
inputsOverlapsWithRefInputs :: SLanguage l -> Plutus l
inputsOverlapsWithRefInputs :: forall (l :: Language). SLanguage l -> Plutus l
inputsOverlapsWithRefInputs =
  ByteString -> Plutus l
forall (l :: Language). HasCallStack => ByteString -> Plutus l
decodeHexPlutus (ByteString -> Plutus l)
-> (SLanguage l -> ByteString) -> SLanguage l -> Plutus l
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
mconcat ([ByteString] -> ByteString)
-> (SLanguage l -> [ByteString]) -> SLanguage l -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    SLanguage l
SPlutusV1 -> [Char] -> [ByteString]
forall a. HasCallStack => [Char] -> a
error [Char]
"Script not available in PlutusV1"
    -- ScriptHash "ceb527511e285c3f3512825ad0f0381073e9e877be2b5ac6e09ed4ab"
    -- Preprocessed PlutusV2 Script:
    -- @@@
    -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                  PlutusTx.Builtins.Internal.BuiltinData ->
    --                                  PlutusTx.Builtins.Internal.BuiltinData -> ()
    -- inputsOverlapsWithRefInputs_0 _datum_1 _redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
    --                                                                {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
    --                                                                                                                _scriptPurpose_5 -> if PlutusTx.Data.List.any (\x_6 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.Class.== x_6)) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoReferenceInputs txInfo_4) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_4
    --                                                                                                                                     then GHC.Tuple.Prim.()
    --                                                                                                                                     else PlutusTx.Builtins.error GHC.Tuple.Prim.()}
    -- @@@
    SLanguage l
SPlutusV2 ->
      [ ByteString
"5901270100003333332222222223253330083232330010013300222222222222200c26223330044a04644a6660"
      , ByteString
"1c66a60046600c4444444444440164c4945280a51133005005001323001001223330071220012253330103375e"
      , ByteString
"00400a2244600400826600800800200200244646464646464646464646466666666666601a6eb0c04c02cdd618"
      , ByteString
"098051bac3013009375660260106eacc04c01cdd618098031bab30130053013004375860260066eacc04c008dd"
      , ByteString
"59809800991a99980b19b8748000c06000448dd7180a8008b180a8009baa301330160013015001301400130130"
      , ByteString
"01301200130110013010001300f001300e001300d001300c00130093754601060126ea8010448004588894ccc0"
      , ByteString
"1c004400c4cc008c020004c02c00555ceaba25734aae795d0aab9f01"
      ]
    -- ScriptHash "c6c7047d159dcfd31100a5738f2eef96e341f7b75fe7de7fb1550326"
    -- Preprocessed PlutusV3 Script:
    -- @@@
    -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                  PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOverlapsWithRefInputs_0 context_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData context_1 of
    --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                              _redeemer_3
    --                                                                                                                              _scriptPurpose_4 -> PlutusTx.Data.List.any (\x_5 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.Class.== x_5)) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoReferenceInputs txInfo_2) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2;
    --                                                                               _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV3 ->
      [ ByteString
"5901790101009800aab9daba2ab9aaab9eaba1ab9caab9f4888888896600264646466002002660044444444444"
      , ByteString
"4444440204c4530014a1232259800c9801198031111111111111111007934928d282294626600a00a0028068c8"
      , ByteString
"c0040048a6003002912cc004cdd7801002c6002004899802002000a01e800a00e800a008223232323232323232"
      , ByteString
"323232323232323298009bac30170109bac301700f9bac301700e9bad301700d9bab301700c9bac301700b9bab"
      , ByteString
"301700a980b804cdd6180b8044dd5980b803cdd5980b8034dd7180b802cdd5980b8024dd6180b801cc004c05c0"
      , ByteString
"0a6002602e603400480908c8c8d6600266e1d2000001894004dd6980d000a2b30013370e9001000c4a00516406"
      , ByteString
"c80d8c068008c070004dd5000980c000980b800980b000980a800980a000980980098090009808800980800098"
      , ByteString
"07800980700098068009806000980580098041baa300730083754008444b30010018801c4cc008c01c004c0280"
      , ByteString
"050054526899319801a4810350543500800200c1"
      ]
    -- ScriptHash "b940f9766e5b3e8932d2ddc40a4d77565180f19b9c7b383ce18c6d48"
    -- Preprocessed PlutusV4 Script:
    -- @@@
    -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
    --                                  PlutusTx.Builtins.Internal.BuiltinUnit
    -- inputsOverlapsWithRefInputs_0 context_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData context_1 of
    --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
    --                                                                                                                              _redeemer_3
    --                                                                                                                              _scriptPurpose_4 -> PlutusTx.Data.List.any (\x_5 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.Class.== x_5)) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoReferenceInputs txInfo_2) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2;
    --                                                                               _ -> GHC.Types.False})
    -- @@@
    SLanguage l
SPlutusV4 ->
      [ ByteString
"5901790101009800aab9daba2ab9aaab9eaba1ab9caab9f4888888896600264646466002002660044444444444"
      , ByteString
"4444440204c4530014a1232259800c9801198031111111111111111007934928d282294626600a00a0028068c8"
      , ByteString
"c0040048a6003002912cc004cdd7801002c6002004899802002000a01e800a00e800a008223232323232323232"
      , ByteString
"323232323232323298009bac30170109bac301700f9bac301700e9bad301700d9bab301700c9bac301700b9bab"
      , ByteString
"301700a980b804cdd6180b8044dd5980b803cdd5980b8034dd7180b802cdd5980b8024dd6180b801cc004c05c0"
      , ByteString
"0a6002602e603400480908c8c8d6600266e1d2000001894004dd6980d000a2b30013370e9001000c4a00516406"
      , ByteString
"c80d8c068008c070004dd5000980c000980b800980b000980a800980a000980980098090009808800980800098"
      , ByteString
"07800980700098068009806000980580098041baa300730083754008444b30010018801c4cc008c01c004c0280"
      , ByteString
"050054526899319801a4810350543500800200c1"
      ]