From dfa73aa4b14c02c3400c5355139924af178b4583 Mon Sep 17 00:00:00 2001 From: Fausto Spoto Date: Tue, 13 Aug 2024 19:16:34 +0200 Subject: [PATCH] Updated tutorial to Hotmoka 1.7.0 --- README.md | 667 ++++++++++++------------ pics/state2.png | Bin 53475 -> 53364 bytes pics/state3.png | Bin 57929 -> 57876 bytes tutorial/create_tutorial_from_source.sh | 116 ++--- 4 files changed, 394 insertions(+), 389 deletions(-) diff --git a/README.md b/README.md index de990310a..e7269a89f 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ the project of the repository where you can find the related code. You can clone that completed tutorial examples repository as follows: ```shell -$ git clone --branch v1.6.0 https://github.com/Hotmoka/hotmoka_tutorial.git +$ git clone --branch v1.7.0 https://github.com/Hotmoka/hotmoka_tutorial.git ``` This will create the `hotmoka_tutorial` directory. Inside that directory, you will @@ -323,7 +323,7 @@ Receiver and payer have different roles but are treated identically in Hotmoka: they are objects stored in state at their respective state locations, known as their _storage references_. For instance the caller in Figure 1 might be allocated at the storage -reference `595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0`. A storage reference has two parts, separated +reference `5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0`. A storage reference has two parts, separated by a `#` sign. The first part are 64 hexadecimal digits (ie, 32 bytes) that identify the transaction that created the object; the second part is a progressive number @@ -416,7 +416,7 @@ computer and a recent version of Maven. You should download and untar the latest release into the directory where you want to install `moka`. For instance, assuming that -the latest version is `1.6.0` and that +the latest version is `1.7.0` and that you want to install it under `~/Opt/moka`, you can run the following commands: ````shell @@ -424,8 +424,8 @@ $ cd ~/Opt $ mkdir moka $ cd moka $ wget https://github.com/Hotmoka/hotmoka/releases/ - download/v1.6.0/moka_1.6.0.tar.gz -$ tar zxf moka_1.6.0.tar.gz + download/v1.7.0/moka_1.7.0.tar.gz +$ tar zxf moka_1.7.0.tar.gz $ export PATH=$PATH:$(pwd) ```` @@ -616,20 +616,20 @@ about the node at that address, as you can see below: ```shell $ moka info --uri ws://panarea.hotmoka.io Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#0 chainId: marabunta maxErrorLength: 300 signature: ed25519 ... - gamete: 04355968e61a05f6eb9c2c2c0270cc88cb821b80876d9db351ec83f21391a80b#0 + gamete: 25b310a0ce87dcd6a019e5a081f38ddc9a8812dff7144273f02d06d3824752c8#0 balance: 99999999999999999999... maxFaucet: 10000000000000 ... - gasStation: 323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#14 + gasStation: f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#14 gasPrice: 1 ... - validators: 323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#1 + validators: f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#1 totalSupply: 1000000000000000... ... ``` @@ -661,7 +661,7 @@ and contains, for instance, the total supply of the cryptocurrency (how much cry been minted up to now). As we said in the previous section, Java objects in the Hotmoka node are identified by their -_storage reference_, such as `323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#14`. +_storage reference_, such as `f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#14`. You can think at a storage reference as a machine-independent pointer inside the memory, or state, of the node. @@ -707,51 +707,51 @@ $ moka create-account 50000000000 --payer faucet --uri ws://panarea.hotmoka.io Please specify the password of the new account: chocolate Free account creation succeeds only if the gamete supports an open unsigned faucet. -Created account 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0. +Created account 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0. Its entropy has been saved into the file - "595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0.pem". + "5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0.pem". Please take note of the following passphrase of 36 words: - 1: awkward - 2: train - 3: mask - 4: inform - 5: ridge - 6: smoke - 7: scissors - 8: obvious - 9: dumb -10: angle -11: segment -12: believe -13: next -14: piece -15: theme -16: garage -17: history -18: insane -19: property -20: trap -21: stay -22: sheriff -23: venture -24: lemon -25: flush -26: level -27: beach -28: tourist -29: fly -30: couple -31: yard -32: tooth -33: leave -34: miss -35: retreat -36: hair + 1: mail + 2: better + 3: supreme + 4: quit + 5: expire + 6: forest + 7: traffic + 8: bus + 9: attract +10: gas +11: glow +12: team +13: warfare +14: color +15: warfare +16: radio +17: online +18: brother +19: hollow +20: jungle +21: arena +22: track +23: brother +24: lyrics +25: relief +26: rice +27: orchard +28: soldier +29: muffin +30: shoot +31: fold +32: news +33: special +34: level +35: sunset +36: hover ``` A *storage reference* -`595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0` has been created. +`5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0` has been created. > Note that this reference will be different in your machine, as well as the 36 words passphrase. > Change these accordingly in the subsequent examples. @@ -771,19 +771,19 @@ let us check that our account really exists at its address, by querying the node with the `moka state` command: ```shell -$ moka state 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 +$ moka state 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io This is the state of object -595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 +5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 @ws://panarea.hotmoka.io class io.takamaka.code.lang.ExternallyOwnedAccount (from jar installed at - 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe) + ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42) nonce:java.math.BigInteger = 0 - publicKey:java.lang.String = "3m/WLUPeXeNTL/PbnqBL3M9Pt2EzMvyFSlEPsmdLDo8=" + publicKey:java.lang.String = "TFqggZYjD4hvykf4rfc84J3cWgfnmFJRWd/8P4jH2Vs=" balance:java.math.BigInteger = 50000000000 (inherited from io.takamaka.code.lang.Contract) balanceRed:java.math.BigInteger = @@ -795,7 +795,7 @@ fields of the account object. Moreover, note that Hotmoka knows which is the class of the object at that address (it is a `io.takamaka.code.lang.ExternallyOwnedAccount`) and where that class is defined (inside the jar -at address `776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe`, +at address `ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42`, that is, `takamakaCode`). > This is completely different from what happens, for instance, @@ -824,7 +824,7 @@ if you want to recharge your account with 200000 extra coins, you can type: ```shell $ moka send 200000 - 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --payer faucet --uri ws://panarea.hotmoka.io ``` You can then use the `moka state` command to verify that the balance of @@ -866,7 +866,7 @@ has been added to your accounts (see Figure 11). ## Importing Accounts -We have created `595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0` with `moka` and +We have created `5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0` with `moka` and `701e20be588db820744df467826d67b9fe451406d7f75da6ef8aeb6805a7365f#0` with Mokito. We might want to _import_ the former in Mokito and the latter in `moka`, and we want to import both inside Hotwallet, so that we can operate on both accounts with all three tools. In order to import @@ -964,24 +964,24 @@ exactly as one would do in Ethereum and other blockchains. He runs the following $ moka create-key Please specify the password of the new key: kiwis -A new key EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T has been created. +A new key 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n has been created. Its entropy has been saved into the file - "./EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T.pem". + "./9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n.pem". ``` Note that there is no `--uri` part in the `moka create-key` command, since this operation runs completely off-line: no object gets created in the state of any Hotmoka node for now. Anonymous pastes the new key into an anonymous email message to us: ``` -Please pay 10000 coins to the key EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T. +Please pay 10000 coins to the key 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n. ``` Once we receive this email, we use (for instance) our previous account to send 10000 coins to that key: ```shell -$ moka send 10000 EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T +$ moka send 10000 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n --anonymous - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -999,44 +999,44 @@ from time to time to see if we have paid, by running the command `moka bind-key` until it succeeds: ```shell -$ moka bind-key EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T +$ moka bind-key 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n --uri ws://panarea.hotmoka.io Cannot bind: nobody has paid anonymously to the key - EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T up to now. + 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n up to now. -$ moka bind-key EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T +$ moka bind-key 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n --uri ws://panarea.hotmoka.io Cannot bind: nobody has paid anonymously to the key - EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T up to now. + 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n up to now. -$ moka bind-key EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T +$ moka bind-key 9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n --uri ws://panarea.hotmoka.io -A new account 1098c9c732fc164bf4e22ad551ec2e5b531590bad4e3ee31820f011490085085#0 +A new account 309ed8d1058c7c7df0ebf85fb37d07e386467660dca2e568436eb9972c8e27b2#0 has been created. Its entropy has been saved into the file - "./1098c9c732fc164bf4e22ad551ec2e5b531590bad4e3ee31820f011490085085#0.pem". + "./309ed8d1058c7c7df0ebf85fb37d07e386467660dca2e568436eb9972c8e27b2#0.pem". ``` Once `moka bind-key` succeeds, Anonymous can enjoy his brand new account, that he can control with the `kiwis` password. So how does that work? The answer is that the `--anonymous` option to `moka send` -creates the account `1098c9c732fc164bf4e22ad551ec2e5b531590bad4e3ee31820f011490085085#0` with the public key of +creates the account `309ed8d1058c7c7df0ebf85fb37d07e386467660dca2e568436eb9972c8e27b2#0` with the public key of Anonymous inside it, so that Anonymous will be able to control that account. But there is more: the `moka send` command will also associate that account to the -key `EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T` inside a hash map contained in the manifest of the node, +key `9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n` inside a hash map contained in the manifest of the node, called _accounts ledger_. The `moka bind-key` command will simply query that -hash map, to see if somebody has already bound an account to `EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T`. +hash map, to see if somebody has already bound an account to `9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n`. -> If, inside the accounts ledger, there is an account _C_ already associated to the key `EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T`, +> If, inside the accounts ledger, there is an account _C_ already associated to the key `9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n`, > then the `moka send` command will not create a new account but will increase the > balance of _C_ and the `moka bind-key` command will consequently yield _C_. > This is a security measure in order > to avoid payment disruptions due to the association of dummy accounts to some keys > or to repeated payments to the same key. -> In any case, the public key of _C_ can only be `EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T`, since the accounts ledger +> In any case, the public key of _C_ can only be `9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n`, since the accounts ledger > enforces that constraint when it gets populated with accounts: > if somebody associates a key _K_ to an account _C_, then the public key > contained inside _C_ must be _K_. @@ -1065,7 +1065,7 @@ You will need Java JDK version at least 11. Clone the project with: ```shell -$ git clone --branch v1.6.0 https://github.com/Hotmoka/hotmoka.git +$ git clone --branch v1.7.0 https://github.com/Hotmoka/hotmoka.git ``` then `cd` to the `moka` directory and @@ -1128,19 +1128,19 @@ automatic explicit unnamed modules/automatic: bcel-6.7.0.jar grpc-stub-1.54.2.jar -io-hotmoka-node-tendermint-abci-1.6.0.jar +io-hotmoka-node-tendermint-abci-1.7.0.jar ... modules/explicit: bcprov-jdk15on-1.70.jar -io-hotmoka-node-local-1.6.0.jar -io-hotmoka-node-local-api-1.6.0.jar -io-hotmoka-verification-1.6.0.jar -io-hotmoka-verification-api-1.6.0.jar +io-hotmoka-node-local-1.7.0.jar +io-hotmoka-node-local-api-1.7.0.jar +io-hotmoka-verification-1.7.0.jar +io-hotmoka-verification-api-1.7.0.jar gson-2.8.9.jar -io-hotmoka-node-disk-1.6.0.jar -io-hotmoka-node-disk-api-1.6.0.jar -io-takamaka-code-1.3.0.jar +io-hotmoka-node-disk-1.7.0.jar +io-hotmoka-node-disk-api-1.7.0.jar +io-takamaka-code-1.3.1.jar it-univr-bcel-1.2.1.jar picocli-4.7.2.jar ... @@ -1223,7 +1223,7 @@ the content of the `pom.xml` file of the `family` project with the code that fol io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -1243,7 +1243,7 @@ the content of the `pom.xml` file of the `family` project with the code that fol that specifies to use Java 11 and provides the dependency to `io-takamaka-code`, that is, the run-time classes of the Takamaka smart contracts. -> We are using `1.3.0` here, as version of the Takamaka runtime +> We are using `1.3.1` here, as version of the Takamaka runtime > project. Replace that, if needed, with the latest version of the project. Since the `pom.xml` file has changed, Eclipse will normally show an error @@ -1346,13 +1346,13 @@ there already, so that ```shell $ cd hotmoka_tutorial $ moka install family/target/family-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate Do you really want to spend up to 494900 gas units to install the jar [Y/N] Y family/target/family-0.0.1.jar has been installed -at c528447126a378e816d64bf811374dceb691cc11d89589f6dca95b919adda62f +at 2dfdad98c8280fa5834be3fe94db06233146275641540aa179de81c1a9afaec7 Total gas consumed: 219355 for CPU: 261 for RAM: 1299 @@ -1420,32 +1420,32 @@ the `runs` project, replacing that generated by Eclipse: io.hotmoka io-hotmoka-node-remote - 1.6.0 + 1.7.0 io.hotmoka io-hotmoka-helpers - 1.6.0 + 1.7.0 io.hotmoka io-hotmoka-node-tendermint - 1.6.0 + 1.7.0 io.hotmoka io-hotmoka-node-disk - 1.6.0 + 1.7.0 io.hotmoka io-hotmoka-node-service - 1.6.0 + 1.7.0 io.hotmoka io-takamaka-code-constants - 1.3.0 + 1.3.1 @@ -1514,7 +1514,7 @@ public class Family { // change this with your account's storage reference private final static String - ADDRESS = "595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0"; + ADDRESS = "5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0"; public static void main(String[] args) throws Exception { @@ -1522,7 +1522,7 @@ public class Family { var familyPath = Paths.get("../family/target/family-0.0.1.jar"); try (var node = RemoteNodes.of(URI.create("ws://panarea.hotmoka.io"), 20000)) { - // we get a reference to where io-takamaka-code-1.3.0.jar has been stored + // we get a reference to where io-takamaka-code-1.3.1.jar has been stored TransactionReference takamakaCode = node.getTakamakaCode(); StorageReference manifest = node.getManifest(); @@ -1650,7 +1650,7 @@ the run menu option or the run green arrow of Eclipse. You should see the following on the screen: ``` family-0.0.1.jar installed at: -7e33772fa98a58ec0e6cb80a7d76bb8410e208d77ad7e062a781782f20ed4077 +7b25f645b5213e0a855ce158cedc341a688c01aa77898486ff9f36ce772809a3 ``` The exact address will change. In any case, note that this reference to the jar is functionally equivalent to that obtained before with the `moka install` command: they point to the same jar. @@ -1661,8 +1661,8 @@ __[See projects `runs` and `family_storage` inside the `hotmoka_tutorial` reposi The jar of our program is in the store of the node now: the `moka install` command has installed it at -`c528447126a378e816d64bf811374dceb691cc11d89589f6dca95b919adda62f` -and our code at `7e33772fa98a58ec0e6cb80a7d76bb8410e208d77ad7e062a781782f20ed4077`. +`2dfdad98c8280fa5834be3fe94db06233146275641540aa179de81c1a9afaec7` +and our code at `7b25f645b5213e0a855ce158cedc341a688c01aa77898486ff9f36ce772809a3`. We can use either of them, interchangeably, as class path for the execution of a transaction that tries to run the constructor of `Person` and add a brand new `Person` object into the store of the node. We can perform this through the `moka` tool: @@ -1672,8 +1672,8 @@ $ cd hotmoka_tutorial # if you are not already there $ moka create io.takamaka.family.Person "Albert Einstein" 14 4 1879 null null - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath c528447126a378e816d64bf811374dceb691cc11d89589f6dca95b919adda62f + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath 2dfdad98c8280fa5834be3fe94db06233146275641540aa179de81c1a9afaec7 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -1749,17 +1749,17 @@ $ cd family $ mvn clean package $ cd .. $ moka install family/target/family-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io ... has been installed at - 41a90f9525299c5df98113275ad73c7335c091446bfa5dda78394f3c7fef9ca3 + c4e98a66ab3b4ae598d1ffaab5aa97c93a8fb8d78282abd359658794179788f6 ... $ moka create io.takamaka.family.Person "Albert Einstein" 14 4 1879 null null - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath 41a90f9525299c5df98113275ad73c7335c091446bfa5dda78394f3c7fef9ca3 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath c4e98a66ab3b4ae598d1ffaab5aa97c93a8fb8d78282abd359658794179788f6 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -1767,7 +1767,7 @@ Do you really want to spend up to 500000 gas units to call public Person(String,int,int,int,Person,Person) ? [Y/N] Y The new object has been allocated at - a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0 + 24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0 Total gas consumed: 41721 for CPU: 291 @@ -1778,21 +1778,21 @@ Total gas consumed: 41721 The new object has been allocated at a storage reference that can be used to refer to it, also in the future: -`a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0`. +`24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0`. You can verify that it is actually there and that its fields are correctly initialized, by using the `moka state` command: ```shell $ cd hotmoka_tutorial -$ moka state a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0 +$ moka state 24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0 --uri ws://panarea.hotmoka.io This is the state of object -a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0 +24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0 @ws://panarea.hotmoka.io class io.takamaka.family.Person (from jar installed at - 41a90f9525299c5df98113275ad73c7335c091446bfa5dda78394f3c7fef9ca3) + c4e98a66ab3b4ae598d1ffaab5aa97c93a8fb8d78282abd359658794179788f6) day:int = 14 month:int = 4 @@ -1850,7 +1850,7 @@ public class Family2 { // change this with your account's storage reference private final static String - ADDRESS = "595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0"; + ADDRESS = "5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0"; private final static ClassType PERSON = StorageTypes.classNamed("io.takamaka.family.Person"); @@ -1860,7 +1860,7 @@ private final static ClassType PERSON = StorageTypes.classNamed("io.takamaka.fam var familyPath = Paths.get("../family_storage/target/family_storage-0.0.1.jar"); try (var node = RemoteNodes.of(URI.create("ws://panarea.hotmoka.io"), 20000)) { - // we get a reference to where io-takamaka-code-1.3.0.jar has been stored + // we get a reference to where io-takamaka-code-1.3.1.jar has been stored TransactionReference takamakaCode = node.getTakamakaCode(); StorageReference manifest = node.getManifest(); @@ -1981,7 +1981,7 @@ Run `Family2` from Eclipse. You should see the following on the console: ``` New object allocated at -121cb3b56d7fd61828b87e6e9a68bde8c14049a86d9b8156480104bc66c4f19b#0 +4e168218952bbfa96a85ca69c1a738d234d95174557f257601a2a3714a3a418f#0 ``` The exact address will change at any run. @@ -2004,9 +2004,9 @@ specifying our `Person` object as *receiver*. ```shell $ moka call - a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0 + 24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0 toString - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -2069,27 +2069,27 @@ $ cd family $ mvn clean package $ cd .. $ moka install family/target/family-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io ... has been installed at - 9c9866798810d966605ecdaacb8130c5d644c77ee518fe3273ac75930e107ce8 + 3d3a8e783941ac4c8ca03fc10e7967a37b9885c9ec4e006ea48eee21fa0a02c9 ... $ moka create io.takamaka.family.Person "Albert Einstein" 14 4 1879 null null - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath 9c9866798810d966605ecdaacb8130c5d644c77ee518fe3273ac75930e107ce8 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath 3d3a8e783941ac4c8ca03fc10e7967a37b9885c9ec4e006ea48eee21fa0a02c9 --uri ws://panarea.hotmoka.io ... The new object has been allocated at - 2111769886f5760d7431ab0cc2044bfe3d967ee7b67fd6917b54955a2b1db237#0 + c9b88a105236b7400805731390bab5863f44b1d0b9f7d9ae7c057e3f0e832509#0 ... $ moka call - 2111769886f5760d7431ab0cc2044bfe3d967ee7b67fd6917b54955a2b1db237#0 + c9b88a105236b7400805731390bab5863f44b1d0b9f7d9ae7c057e3f0e832509#0 toString - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io ... @@ -2152,7 +2152,7 @@ public class Family3 { // change this with your account's storage reference private final static String - ADDRESS = "595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0"; + ADDRESS = "5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0"; private final static ClassType PERSON = StorageTypes.classNamed("io.takamaka.family.Person"); @@ -2162,7 +2162,7 @@ public class Family3 { var familyPath = Paths.get("../family_exported/target/family_exported-0.0.1.jar"); try (var node = RemoteNodes.of(URI.create("ws://panarea.hotmoka.io"), 20000)) { - // we get a reference to where io-takamaka-code-1.3.0.jar has been stored + // we get a reference to where io-takamaka-code-1.3.1.jar has been stored TransactionReference takamakaCode = node.getTakamakaCode(); StorageReference manifest = node.getManifest(); @@ -2353,8 +2353,7 @@ The set of _storage values_ is the union of doubles and booleans); 2. reference values whose class extends `io.takamaka.code.lang.Storage` (that is, _storage objects_); 3. `null`; -4. elements of an `enum` without instance non-transient fields; -5. a few special reference values: `java.math.BigInteger`s and `java.lang.String`s. +4. a few special reference values: `java.math.BigInteger`s and `java.lang.String`s. Storage values cross the node's boundary inside wrapper objects. For instance the integer 2019 @@ -2382,7 +2381,7 @@ objects and must, themselves, be kept in store. Hence, a storage object: 1. has a class that extends (directly or indirectly) `io.takamaka.code.lang.Storage`, and 2. is such that all its fields hold storage values (primitives, storage objects, `null`, -elements of `enum`s without instance non-transient fields, a `java.math.BigInteger` or a `java.lang.String`). +a `java.math.BigInteger` or a `java.lang.String`). Note that the above conditions hold for the class `Person` defined above. Instead, the following are examples of what is **not** allowed in a field of a storage object: @@ -2551,7 +2550,7 @@ the project inside the `hotmoka_tutorial` directory, as a sibling of `family` an io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -3325,14 +3324,14 @@ We can now start by installing that jar in the node: ```shell $ cd hotmoka_tutorial # if not already there $ moka install ponzi/target/ponzi-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate Do you really want to spend up to 697300 gas units to install the jar [Y/N] Y ponzi/target/ponzi-0.0.1.jar has been installed at -cbae2bc748bf266d0a14061d84fe0bee3f1ff91070a47905b42e1a259e06aeef +b8b37e6a848dd59ecd091194f234ff6409705a78bc0df774d5716d5d9c611b2e ``` We create two more accounts now, letting our first account pay: @@ -3340,7 +3339,7 @@ We create two more accounts now, letting our first account pay: ```shell $ moka create-account 10000000 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -3352,15 +3351,15 @@ Total gas consumed: 44574 for storage: 42821 for penalty: 0 -A new account af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 +A new account 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 has been created. Its entropy has been saved into the file -"af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0.pem". +"12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0.pem". Please take note of the following passphrase of 36 words... $ moka create-account 10000000 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -3372,10 +3371,10 @@ Total gas consumed: 44574 for storage: 42821 for penalty: 0 -A new account 61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0 +A new account eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0 has been created. Its entropy has been saved into the file -"61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0.pem". +"eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0.pem". Please take note of the following passphrase of 36 words... ``` @@ -3385,8 +3384,8 @@ and become the first investor of the contract: ```shell $ moka create io.takamaka.ponzi.GradualPonzi - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath cbae2bc748bf266d0a14061d84fe0bee3f1ff91070a47905b42e1a259e06aeef + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath b8b37e6a848dd59ecd091194f234ff6409705a78bc0df774d5716d5d9c611b2e --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -3394,16 +3393,16 @@ Do you really want to spend up to 500000 gas units to call @FromContract(PayableContract.class) public GradualPonzi() ? [Y/N] Y The new object has been allocated at -81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 +432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 ``` We let the other two players invest, in sequence, in the `GradualPonzi` contract: ```shell $ moka call - 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 + 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 invest 5000 - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: orange @@ -3411,9 +3410,9 @@ Do you really want to spend up to 500000 gas units to call public void invest(java.math.BigInteger) ? [Y/N] Y $ moka call - 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 + 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 invest 15000 - --payer 61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0 + --payer eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: apple @@ -3427,9 +3426,9 @@ since the code of the contract requires a minimum investment: ```shell $ moka call - 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 + 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 invest 500 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -3456,19 +3455,19 @@ require(amount.compareTo(MINIMUM_INVESTMENT) >= 0, Finally, we can check the state of the contract: ```shell -$ moka state 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 +$ moka state 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 --uri ws://panarea.hotmoka.io This is the state of object -81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0 +432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0 @ws://panarea.hotmoka.io class io.takamaka.ponzi.GradualPonzi (from jar installed at - cbae2bc748bf266d0a14061d84fe0bee3f1ff91070a47905b42e1a259e06aeef) + b8b37e6a848dd59ecd091194f234ff6409705a78bc0df774d5716d5d9c611b2e) MINIMUM_INVESTMENT:java.math.BigInteger = 1000 investors:io.takamaka.code.util.StorageList - = 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#1 + = 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#1 balance:java.math.BigInteger = 0 (inherited from io.takamaka.code.lang.Contract) balanceRed:java.math.BigInteger = 0 (inherited from io.takamaka.code.lang.Contract) ``` @@ -3476,20 +3475,20 @@ You can see that the contract keeps no balance. Moreover, its `investors` field object, whose state can be further investigated: ```shell -$ moka state 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#1 +$ moka state 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#1 --uri ws://panarea.hotmoka.io This is the state of object -81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#1 +432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#1 @ws://panarea.hotmoka.io class io.takamaka.code.util.StorageLinkedList (from jar installed at - 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe) + ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42) first:io.takamaka.code.util.StorageLinkedList$Node - = 81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#2 + = 432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#2 last:io.takamaka.code.util.StorageLinkedList$Node - = 36d36b397c0ae0a99058b93aadd11d0ab8edc217033f2d4f979f00bcaa9d9840#0 + = 5bdff31c6151ec5b381e8fc43e76efd382ab20d90b004597cc133b9a1619ea49#0 size:int = 3 ``` As you can see, it is a `StorageLinkedList` of size three, since it contains our three accounts that interacted with the @@ -3555,19 +3554,19 @@ as in Figure 27.

Figure 27. A draw

Figure 27. A draw.

-A natural representation of the tic-tac-toe board is a bidimensional array +A natural representation of the tic-tac-toe board is a two-dimensional array where indexes are distributed as shown in Figure 28. -

Figure 28. A bidimensional representation of the game

Figure 28. A bidimensional representation of the game.

+

Figure 28. A two-dimensional representation of the game

Figure 28. A two-dimensional representation of the game.

This can be implemented as a `StorageTreeArray>`, where `Tile` is -an enumeration of the three possible tiles (empty, cross, circle). This is +a class that enumerates the three possible tiles (empty, cross, circle). This is possible but overkill. It is simpler and cheaper (also in terms of gas) to use the previous diagram as a conceptual representation of the board shown to the users, but use, internally, -a monodimensional array of nine tiles, distributed as in Figure 29. -This monodimensional array can be implemented as a `StorageTreeArray`. There will be functions +a one-dimensional array of nine tiles, distributed as in Figure 29. +This one-dimensional array can be implemented as a `StorageTreeArray`. There will be functions for translating the conceptual representation into the internal one.

Figure 29. A linear representation of the game

Figure 29. A linear representation of the game.

@@ -3598,7 +3597,7 @@ the project inside the `hotmoka_tutorial` directory, as a sibling of `family`, ` io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -3639,22 +3638,23 @@ import io.takamaka.code.lang.Contract; import io.takamaka.code.lang.FromContract; import io.takamaka.code.lang.Payable; import io.takamaka.code.lang.PayableContract; +import io.takamaka.code.lang.Storage; import io.takamaka.code.lang.View; import io.takamaka.code.util.StorageArray; import io.takamaka.code.util.StorageTreeArray; public class TicTacToe extends Contract { - public enum Tile { - EMPTY, CROSS, CIRCLE; + public class Tile extends Storage { + private final char c; + + private Tile(char c) { + this.c = c; + } @Override public String toString() { - switch (this) { - case EMPTY: return " "; - case CROSS: return "X"; - default: return "O"; - } + return String.valueOf(c); } private Tile nextTurn() { @@ -3662,9 +3662,13 @@ public class TicTacToe extends Contract { } } - private final StorageArray board = new StorageTreeArray<>(9, Tile.EMPTY); + private final Tile EMPTY = new Tile(' '); + private final Tile CROSS = new Tile('X'); + private final Tile CIRCLE = new Tile('O'); + + private final StorageArray board = new StorageTreeArray<>(9, EMPTY); private PayableContract crossPlayer, circlePlayer; - private Tile turn = Tile.CROSS; // cross plays first + private Tile turn = CROSS; // cross plays first private boolean gameOver; public @View Tile at(int x, int y) { @@ -3683,11 +3687,11 @@ public class TicTacToe extends Contract { require(!gameOver, "the game is over"); require(1 <= x && x <= 3 && 1 <= y && y <= 3, "coordinates must be between 1 and 3"); - require(at(x, y) == Tile.EMPTY, "the selected tile is not empty"); + require(at(x, y) == EMPTY, "the selected tile is not empty"); var player = (PayableContract) caller(); - if (turn == Tile.CROSS) + if (turn == CROSS) if (crossPlayer == null) crossPlayer = player; else @@ -3729,30 +3733,27 @@ public class TicTacToe extends Contract { } ``` -The internal enumeration `Tile` represents the three alternatives that can be +The internal class `Tile` represents the three alternatives that can be put in the tic-tac-toe board. It overrides the default `toString()` implementation, to yield the usual representation for such alternatives; its `nextTurn()` method alternates between cross and circle. -> There is no need to make the `Tile` enumeration `static`, to save gas, -> since enumerations are always implicitly `static` in Java. - -The board of the game is represented as a `new StorageTreeArray<>(9, Tile.EMPTY)`, whose -elements are indexed from 0 to 8 (inclusive) and are initialized to `Tile.EMPTY`. +The board of the game is represented as a `new StorageTreeArray<>(9, EMPTY)`, whose +elements are indexed from 0 to 8 (inclusive) and are initialized to `EMPTY`. It is also possible to construct the array as `new StorageTreeArray<>(9)`, but then its elements would hold the default value `null` and the array would need to be initialized inside a constructor for `TicTacToe`: ```java public TicTacToe() { - rangeClosed(0, 8).forEachOrdered(index -> board.set(index, Tile.EMPTY)); + rangeClosed(0, 8).forEachOrdered(index -> board.set(index, EMPTY)); } ``` Methods `at()` and `set()` read and set the board element -at indexes (x,y), respectively. They transform the bidimensional conceptual representation -of the board into its internal monodimensional representation. Since `at()` is `public`, +at indexes (x,y), respectively. They transform the two-dimensional conceptual representation +of the board into its internal one-dimensional representation. Since `at()` is `public`, we defensively check the validity of the indexes there. Method `play()` is the heart of the contract. It is called by the accounts @@ -3851,22 +3852,23 @@ import io.takamaka.code.lang.Contract; import io.takamaka.code.lang.FromContract; import io.takamaka.code.lang.Payable; import io.takamaka.code.lang.PayableContract; +import io.takamaka.code.lang.Storage; import io.takamaka.code.lang.View; import io.takamaka.code.util.StorageArray; import io.takamaka.code.util.StorageTreeArray; public class TicTacToe extends Contract { - public enum Tile { - EMPTY, CROSS, CIRCLE; + public class Tile extends Storage { + private final char c; + + private Tile(char c) { + this.c = c; + } @Override public String toString() { - switch (this) { - case EMPTY: return " "; - case CROSS: return "X"; - default: return "O"; - } + return String.valueOf(c); } private Tile nextTurn() { @@ -3874,12 +3876,16 @@ public class TicTacToe extends Contract { } } + private final Tile EMPTY = new Tile(' '); + private final Tile CROSS = new Tile('X'); + private final Tile CIRCLE = new Tile('O'); + private final static long MINIMUM_BET = 100L; - private final StorageArray board = new StorageTreeArray<>(9, Tile.EMPTY); + private final StorageArray board = new StorageTreeArray<>(9, EMPTY); private final PayableContract creator; private PayableContract crossPlayer, circlePlayer; - private Tile turn = Tile.CROSS; // cross plays first + private Tile turn = CROSS; // cross plays first private boolean gameOver; public @FromContract(PayableContract.class) TicTacToe() { @@ -3902,11 +3908,11 @@ public class TicTacToe extends Contract { require(!gameOver, "the game is over"); require(1 <= x && x <= 3 && 1 <= y && y <= 3, "coordinates must be between 1 and 3"); - require(at(x, y) == Tile.EMPTY, "the selected tile is not empty"); + require(at(x, y) == EMPTY, "the selected tile is not empty"); var player = (PayableContract) caller(); - if (turn == Tile.CROSS) + if (turn == CROSS) if (crossPlayer == null) { require(amount >= MINIMUM_BET, () -> "you must bet at least " + MINIMUM_BET + " coins"); @@ -3949,7 +3955,7 @@ public class TicTacToe extends Contract { } private boolean isDraw() { - return rangeClosed(0, 8).mapToObj(board::get).noneMatch(Tile.EMPTY::equals); + return rangeClosed(0, 8).mapToObj(board::get).noneMatch(EMPTY::equals); } @Override @@ -3998,14 +4004,14 @@ Let us start by installing that jar in the node: ```shell $ moka install tictactoe/target/tictactoe-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate Do you really want to spend up to 870600 gas units to install the jar [Y/N] Y tictactoe/target/tictactoe-0.0.1.jar has been installed -at 6bfc957d64cefee01950a9c185e7abfc83333b5632386c7af827bfa919cfe884 +at 85a234ecc737d83f33659bc94e916e8248274f19dfc6b5f0a29dbce7f1f947ed ``` Then we create an instance of the contract in the node: @@ -4013,8 +4019,8 @@ Then we create an instance of the contract in the node: ```shell $ moka create io.takamaka.tictactoe.TicTacToe - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath 6bfc957d64cefee01950a9c185e7abfc83333b5632386c7af827bfa919cfe884 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath 85a234ecc737d83f33659bc94e916e8248274f19dfc6b5f0a29dbce7f1f947ed --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate @@ -4022,7 +4028,7 @@ Do you really want to spend up to 500000 gas units to call @FromContract(PayableContract.class) public TicTacToe() ? [Y/N] Y The new object has been allocated at -85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 +a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 ``` We use two of our accounts now, that we have already created in the previous section, @@ -4033,15 +4039,15 @@ The first player starts, by playing at (1,1), and bets 100: ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 100 1 1 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 toString - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io X| | @@ -4055,15 +4061,15 @@ The second player plays after, at (2,1), betting 100: ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 100 2 1 - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 toString - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io X|O| @@ -4078,15 +4084,15 @@ The first player replies, playing at (1,2): ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 0 1 2 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 toString - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io X|O| @@ -4100,15 +4106,15 @@ Then the second player plays at (2,2): ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 0 2 2 - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 toString - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io X|O| @@ -4122,15 +4128,15 @@ The first player wins by playing at (1,3): ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 0 1 3 - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 toString - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io X|O| @@ -4141,15 +4147,15 @@ X| | ``` We can verify that the game is over now: ```shell -$ moka state 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 +$ moka state a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 --uri ws://panarea.hotmoka.io This is the state of object -85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 +a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 @ws://panarea.hotmoka.io class io.takamaka.tictactoe.TicTacToe (from jar installed at - 6bfc957d64cefee01950a9c185e7abfc83333b5632386c7af827bfa919cfe884) + 85a234ecc737d83f33659bc94e916e8248274f19dfc6b5f0a29dbce7f1f947ed) ... gameOver:boolean = true @@ -4163,9 +4169,9 @@ If the second player attempts to play now, the transaction will be rejected, sin ```shell $ moka call - 85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0 + a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0 play 0 2 3 - --payer af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 + --payer 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 --uri ws://panarea.hotmoka.io io.hotmoka.node.api.TransactionException: @@ -4316,7 +4322,7 @@ the project inside the `hotmoka_tutorial` directory, as a sibling of `family`, ` io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -4833,9 +4839,9 @@ public class Auction { private final static String[] ADDRESSES = new String[3]; static { - ADDRESSES[0] = "595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0"; - ADDRESSES[1] = "af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0"; - ADDRESSES[2] = "61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0"; + ADDRESSES[0] = "5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0"; + ADDRESSES[1] = "12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0"; + ADDRESSES[2] = "eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0"; } public final static int NUM_BIDS = 10; // number of bids placed @@ -5293,8 +5299,8 @@ actually computes the right winner, since they will always print the identical s object (different at each run, in general), such as: ``` -expected winner: 61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0 -actual winner: 61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0 +expected winner: eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0 +actual winner: eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0 ``` You can run class `Auction` from Eclipse. @@ -5316,8 +5322,8 @@ Revealing bid 2 out of 20 Revealing bid 3 out of 20 ... Revealing bid 10 out of 10 -expected winner: af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 -actual winner: af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0 +expected winner: 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 +actual winner: 12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0 ``` ### Listening to Events @@ -5539,7 +5545,7 @@ and so on). Use the following `pom.xml`: io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -5617,13 +5623,13 @@ Then you can install that jar in the node, by letting our first account pay: ```shell $ cd .. $ moka install erc20/target/erc20-0.0.1.jar - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate Do you really want to spend up to 504100 gas units to install the jar [Y/N] Y erc20/target/erc20-0.0.1.jar has been installed at -b72ee0386d4ecfd9a319c247da4e6f7126ac1d5eb06fbffd18020ce7effa0e0a +3b8157f04217918a76b48fc0f4388b4bece80ad0e542c42722a887d648cd314d Total gas consumed: 244568 for CPU: 262 for RAM: 1303 @@ -5637,14 +5643,14 @@ for that: ```shell $ moka create io.takamaka.erc20.CryptoBuddy - --payer 595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0 - --classpath b72ee0386d4ecfd9a319c247da4e6f7126ac1d5eb06fbffd18020ce7effa0e0a + --payer 5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0 + --classpath 3b8157f04217918a76b48fc0f4388b4bece80ad0e542c42722a887d648cd314d --uri ws://panarea.hotmoka.io Please specify the password of the payer account: chocolate Do you really want to spend up to 500000 gas units to call CryptoBuddy() ? [Y/N] Y The new object has been allocated at -d9d0d07bf8b534084257122e10d5ca4d095f290d2efd0a346b99de9afb64f1aa#0 +2daa4ce2dbd152bcb4917fdd1574173373c77b306bcd754309da38a138ebed17#0 Total gas consumed: 129369 for CPU: 1314 for RAM: 2843 @@ -5653,7 +5659,7 @@ Total gas consumed: 129369 ``` The new ledger instance is installed in the storage of the node now, at the address -`d9d0d07bf8b534084257122e10d5ca4d095f290d2efd0a346b99de9afb64f1aa#0`. It is possible to start interacting with that ledger instance, by transferring +`2daa4ce2dbd152bcb4917fdd1574173373c77b306bcd754309da38a138ebed17#0`. It is possible to start interacting with that ledger instance, by transferring tokens between accounts. For instance, this can be done with the `moka call` command, that allows one to invoke the `transfer` or `transferFrom` methods of the ledger. It is possible to show the state of the ledger with the `moka state` command, although specific @@ -5795,7 +5801,7 @@ and so on). Use the following `pom.xml`: io.hotmoka io-takamaka-code - 1.3.0 + 1.3.1 @@ -6090,7 +6096,7 @@ local Maven's cache for that: $ moka init-tendermint 100000000000000 --tendermint-config mytestnet/node0 --takamaka-code ~/.m2/repository/io/hotmoka/io-takamaka-code/ - 1.3.0/io-takamaka-code-1.3.0.jar + 1.3.1/io-takamaka-code-1.3.1.jar --key-of-gamete FaHYC1TxCJBcpgz8FrXy2bidwNBgPjPg1L7GEHaDHwmZ Do you really want to start a new node at this place @@ -6261,7 +6267,7 @@ You specify the public component of the key when starting the node: $ moka init-disk 100000000000000000000000 --open-unsigned-faucet --takamaka-code ~/.m2/repository/io/hotmoka/io-takamaka-code/ - 1.3.0/io-takamaka-code-1.3.0.jar + 1.3.1/io-takamaka-code-1.3.1.jar --key-of-gamete FaHYC1TxCJBcpgz8FrXy2bidwNBgPjPg1L7GEHaDHwmZ Do you really want to start a new node at this place @@ -6957,20 +6963,20 @@ $ moka create-account 1000000000000 --payer faucet --uri ws://panarea.hotmoka.io Please specify the password of the new account: game ... -A new account 399952f7c726021aeeb8db4bdc168387525aa4c1732b47cabc29db1541532430#0 +A new account e42def4faba5d93346e4d02a1608c9fb53ba7beea84ffb0064cdfe431d079867#0 has been created ``` You can check the class of the new account with the `moka state` command: ```shell -$ moka state 399952f7c726021aeeb8db4bdc168387525aa4c1732b47cabc29db1541532430#0 +$ moka state e42def4faba5d93346e4d02a1608c9fb53ba7beea84ffb0064cdfe431d079867#0 --uri ws://panarea.hotmoka.io ... class io.takamaka.code.lang.ExternallyOwnedAccountED25519 ... publicKey:java.lang.String = - "i0nn/zcy4AIPy6rref9rPjTq/qVNIn8Zi7iPET9wLpE=" + "N7hQ0gpmpV46JJlQ+7zEy7r2OTn/jErqxV9g3+tg2/o=" balance:java.math.BigInteger = 1000000000000 ... ``` @@ -6986,7 +6992,7 @@ $ moka create-account 1000000000000 Please specify the password of the new account: play ... -A new account 4f3d5aa316baedc080bd75cfa0ed80042c049644451bbe21490a4f8aaddaf458#0 +A new account fdb930378af70c212649e4f9b888d7c275373cf5b9601b40e4802d29fa27af89#0 has been created ``` This creation has been more expensive, because the public key of the @@ -6994,7 +7000,7 @@ sha256dsa algorithm is much longer than that for the ed25519 algorithm. You can verify this with the `moka state` command: ```shell -$ moka state 4f3d5aa316baedc080bd75cfa0ed80042c049644451bbe21490a4f8aaddaf458#0 +$ moka state fdb930378af70c212649e4f9b888d7c275373cf5b9601b40e4802d29fa27af89#0 --uri ws://panarea.hotmoka.io ... @@ -7016,7 +7022,7 @@ Please specify the password of the new account: quantum1 ... Total gas consumed: 5294043 ... -A new account 5c3428e7967b71ca4af3c236960c93e45da09961fdc75b9f6a695910c7ddcf1d#0 +A new account b65e5976862d6786ba9a6d2cd62b332bfa7f8859e2c8b9be3bbbe5cd64af6c1e#0 has been created ``` The creation of this account has been very expensive, since quantum-resistant @@ -7027,7 +7033,7 @@ Finally, let us use the previous qtesla-p-I account to create a qtesla-p-III acc ```shell $ moka create-account 100000 - --payer 5c3428e7967b71ca4af3c236960c93e45da09961fdc75b9f6a695910c7ddcf1d#0 + --payer b65e5976862d6786ba9a6d2cd62b332bfa7f8859e2c8b9be3bbbe5cd64af6c1e#0 --signature qtesla3 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: quantum1 @@ -7035,7 +7041,7 @@ Please specify the password of the new account: quantum3 ... Total gas consumed: 5294170 ... -A new account 411813d7049a0bb8e3adfa2d3623bd03eae1d92654668a35f75d0fcf26f7d5e5#0 +A new account b37b9c040474fc800079230bc51409201f12f82e220b99e7b6468c5f62591ea8#0 has been created ``` @@ -7050,13 +7056,13 @@ the `family-0.0.1.jar` code in the node: ```shell $ cd hotmoka_tutorial $ moka install family/target/family-0.0.1.jar - --payer 5c3428e7967b71ca4af3c236960c93e45da09961fdc75b9f6a695910c7ddcf1d#0 + --payer b65e5976862d6786ba9a6d2cd62b332bfa7f8859e2c8b9be3bbbe5cd64af6c1e#0 --uri ws://panarea.hotmoka.io Please specify the password of the payer account: quantum1 Do you really want to spend up to 696900 gas units to install the jar [Y/N] Y family/target/family-0.0.1.jar has been installed -at 54763a31c8cdf56af5f09643c9a185cedb7eb53a6eaab057fb275e7620fb709d +at a9d69ce22453c912a436e990074fd3493c87667ada85b6881f5566a7efae08e7 ... ``` @@ -7100,9 +7106,9 @@ key pair of the gamete, as we did in the previous chapter: $ moka create-key Please specify the password of the new key: king -A new key 9YWXKfU1mot3twaU8WD885GGTrzAK1A8v2JUohwBXkcD has been created. +A new key AsqsX1tBMriz18xvoxvc64K4HAvxgFmwWryKcMeR64oc has been created. Its entropy has been saved into the file - "./9YWXKfU1mot3twaU8WD885GGTrzAK1A8v2JUohwBXkcD.pem". + "./AsqsX1tBMriz18xvoxvc64K4HAvxgFmwWryKcMeR64oc.pem". ``` We can now start a Docker node as a container: @@ -7110,16 +7116,16 @@ We can now start a Docker node as a container: ```shell $ docker run -dit -e INITIAL_SUPPLY=1000000000000000 - -e KEY_OF_GAMETE=9YWXKfU1mot3twaU8WD885GGTrzAK1A8v2JUohwBXkcD + -e KEY_OF_GAMETE=AsqsX1tBMriz18xvoxvc64K4HAvxgFmwWryKcMeR64oc -e CHAIN_ID=caterpillar -e OPEN_UNSIGNED_FAUCET=true -p 8001:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 init -cf8d78e004372082466abfff9a5f58d97f2cbbaa02cfef97e906e2f3132e68cc +00a196685e5c8a8d788b892cb09a994e48016d736bfeaf89c1f339d72f7a717b ``` Wait for around 30 seconds, in order to give time to the node to start. After that time, the node should be up @@ -7129,10 +7135,10 @@ and running in your local machine, as you can verify with `moka info`: $ moka info --uri ws://localhost:8001 Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#0 chainId: caterpillar - gamete: 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 + gamete: 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 balance: 1000000000000000 ... ``` @@ -7143,12 +7149,12 @@ Info about the node: In order to use the gamete, we must bind the key to its storage reference: ```shell -$ moka bind-key 9YWXKfU1mot3twaU8WD885GGTrzAK1A8v2JUohwBXkcD +$ moka bind-key AsqsX1tBMriz18xvoxvc64K4HAvxgFmwWryKcMeR64oc -A new account 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 +A new account 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 has been created. Its entropy has been saved into the file - "./8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0.pem". + "./3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0.pem". ``` That's all. We can now use the gamete to open the faucet of the node (`moka faucet`) and play @@ -7158,11 +7164,11 @@ to `ws://localhost:8001` instead of `ws://panarea.hotmoka.io`. Let us analyze the options passed to `docker`. The `run -dit` command means that we want to instantiate, and run as an interactive daemon, a Docker image, which is actually specified at the end: -`hotmoka/tendermint-node:1.6.0`. Docker will download that image from Docker Hub. +`hotmoka/tendermint-node:1.7.0`. Docker will download that image from Docker Hub. > That image assumes that you are using a Linux machine based on the amd64 architecture. > If you are using a Linux machine based on the arm64 architecture, use the -> `hotmoka/tendermint-node-arm64:1.6.0` image. If you are using a Windows machine, +> `hotmoka/tendermint-node-arm64:1.7.0` image. If you are using a Windows machine, > you need to run a Linux image inside a Linux virtual machine, as always in Docker. > Please refer to the Docker documentation to know how this can be accomplished. @@ -7197,7 +7203,7 @@ The `docker run` command printed a hash at the end, that identifies the running We can use it, for instance, to turn the container off when we do not need it anymore: ```shell -$ docker stop cf8d78e004372082466abfff9a5f58d97f2cbbaa02cfef97e906e2f3132e68cc +$ docker stop 00a196685e5c8a8d788b892cb09a994e48016d736bfeaf89c1f339d72f7a717b ``` > The hash will be different in your experiments. Use yours. @@ -7225,10 +7231,10 @@ $ docker run -dit -p 8001:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 resume -603015fe011c516e63196566ec1ede0ebae579bdadabb5a0443ee3b370870541 +3f59c2cdb0a57c5f3df2da7a018ccfa16f7fa48f73e65970b4bf8da60e3972c7 ``` Wait for a few seconds and then verify that the _same_ node is back: @@ -7237,10 +7243,10 @@ Wait for a few seconds and then verify that the _same_ node is back: $ moka info --uri ws://localhost:8001 Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#0 chainId: caterpillar - gamete: 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 + gamete: 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 balance: 1000000000000000 ... ``` @@ -7248,13 +7254,13 @@ Info about the node: Turn the node off now and conclude our experiment: ```shell -$ docker stop 603015fe011c516e63196566ec1ede0ebae579bdadabb5a0443ee3b370870541 +$ docker stop 3f59c2cdb0a57c5f3df2da7a018ccfa16f7fa48f73e65970b4bf8da60e3972c7 ``` The Docker image contains a `help` command. Try for instance: ```shell -$ docker run --rm -it hotmoka/tendermint-node:1.6.0 help +$ docker run --rm -it hotmoka/tendermint-node:1.7.0 help This container runs a Hotmoka node based on Tendermint. It understands the following commands and options: @@ -7288,10 +7294,10 @@ $ docker run -dit -p 8001:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 resume -95d5cc7ba10b4ce6f14712786f8c3c14577d2c470b4e5e34eadeb2777df5f6be +b83bd0a5e49ed82278742f49b1490abd8a84c103fc684cb4b0222a292a6863f5 ``` After a few seconds, the node will be up and we can show its manifest: @@ -7300,16 +7306,16 @@ After a few seconds, the node will be up and we can show its manifest: $ moka info Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#0 chainId: caterpillar - gamete: 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 + gamete: 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 balance: 1000000000000000 ... - validators: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#1 + validators: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#1 number of validators: 1 - validator #0: e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0 - id: 684CC341743E300E7A0E2718AA15788834526EE8 + validator #0: 7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0 + id: 84694297DB4B75A1B0C810F051035A0D7A8A3D99 balance: 0 staked: 0 power: 1000000 @@ -7320,7 +7326,7 @@ but must be available to the person who started the container. Normally, it is the key that was created before starting the node (with `moka create-key`) and that is later bound to the storage address of the gamete (with `moka bind-key`). If you followed the instructions in the previous section, you should have an -`8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0.pem` file in your file system +`3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0.pem` file in your file system (the actual address will be different in your machine, but will match the address of the gamete in your node). With that pem file, you have _superuser_ rights, in the sense that you can, for instance, open and close the faucet (but only if you started the node with the `OPEN_UNSIGNED_FAUCET` option set to true). @@ -7328,7 +7334,7 @@ Moreover, you own all cryptocurrency minted for the node! With that, you can cre as you want and in general run any transaction you like. There is a second account that has been created. Namely, the _validator_ account, at the address -`e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0` (this will be different in your node). +`7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0` (this will be different in your node). This is an externally owned account that gets remunerated for every non-`@View` transaction run in the node and included in blockchain. The previous print-out shows that, at the beginning, the balance of the validator is 0. Let us run a transaction and check what happens. @@ -7337,16 +7343,16 @@ we hold the keys of the gamete): ```shell $ moka create-account 1234567 - --payer 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 + --payer 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 Please specify the password of the payer account: king Please specify the password of the new account: rock-and-roll Do you really want to spend up to 200000 gas units to create a new account [Y/N] Y -Total gas consumed: 2563 -A new account 7b19fe903a39002b4a2404277a42350ba3dc96df041e854bbf6cc644c82fb902#0 +Total gas consumed: 2565 +A new account 44ca934098eb91fcc5efe1a6e67e29cf39179e94ce78cf08a71850c1add2e38f#0 has been created. Its entropy has been saved into the file - "7b19fe903a39002b4a2404277a42350ba3dc96df041e854bbf6cc644c82fb902#0.pem". + "44ca934098eb91fcc5efe1a6e67e29cf39179e94ce78cf08a71850c1add2e38f#0.pem". ``` The gas consumed for this transaction has been forwarded to the validators of the blockchain, at its current price. @@ -7356,33 +7362,33 @@ Since there is only a single validator, everything goes to it, as you can verify $ moka info Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#0 chainId: caterpillar - gamete: 8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0 - balance: 999999998762870 + gamete: 3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0 + balance: 999999998762868 ... - validators: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#1 + validators: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#1 surcharge for buying validation power: 50000000 (ie. 50.000000%) slashing for misbehaving validators: 1000000 (ie. 1.000000%) slashing for not behaving validators: 500000 (ie. 0.500000%) percent of validators' reward that gets staked: 75000000 (ie. 75.000000%) number of validators: 1 - validator #0: e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0 - id: 684CC341743E300E7A0E2718AA15788834526EE8 + validator #0: 7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0 + id: 84694297DB4B75A1B0C810F051035A0D7A8A3D99 balance: 642 - staked: 1923 + staked: 1925 power: 1000000 initialInflation: 100000 (ie. 0.100000%) currentInflation: 99999 (ie. 0.099999%) ``` The manifest reported above tells us that the gamete has now a reduced balance: -it paid 1000000000000000 - 999999998762870 that is 1237130 panareas to create the new account. +it paid 1000000000000000 - 999999998762868 that is 1237132 panareas to create the new account. Of these, 1234567 went to the balance of the new account. The remaining -1237130 - 1234567, that is 2563, have been paid for gas (it seems that the gas price -was at one panarea per gas unit). It is important to note that the 2563 panareas did not go +1237132 - 1234567, that is 2565, have been paid for gas (it seems that the gas price +was at one panarea per gas unit). It is important to note that the 2565 panareas did not go _immediately_ to the only validator: as shown above, only 642 have been paid immediately; -other 1923 have been _staked_ for that validator, that is, kept in the validators contract +other 1925 have been _staked_ for that validator, that is, kept in the validators contract as a motivation for the validator to behave correctly. In the future, if the validator misbehaves (that is, does not validate the transactions correctly or does not validate them at all) then this stake will be reduced by a percent that is called _slashing_. This is reported above @@ -7392,12 +7398,12 @@ validators that do not validate at all (for instance, they are down). The staked amount of panareas will be forwarded to the validator only when it will sell all its validation power to another validator and stop being a validator. -There is a final remark. We said that 2563 panareas have been forwarded to the validator -(immediately or staked). But 642 + 1923 -is 2565. Where do these 2565 - 2563 (that is, 2 panareas) +There is a final remark. We said that 2565 panareas have been forwarded to the validator +(immediately or staked). But 642 + 1925 +is 2567. Where do these 2567 - 2565 (that is, 2 panareas) come from? They have been _minted_, that is, created from scratch as a form of _inflation_. You can see from the manifest that the initial inflation was 0.1%. It is actually the case that -0.1% of 2563 is 2 (approximatively). +0.1% of 2565 is 2 (approximatively). We have understood that the validator account receives payments for the validation of transactions. But who controls this validator? It turns out that the Docker container @@ -7408,16 +7414,16 @@ You must be root to do that: ```shell $ sudo ls /var/lib/docker/volumes/chain/_data/ -e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0.pem +7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0.pem ... ``` In alternative, you can use the `docker exec` command to run a command inside the container. You do not need to be root, but need to remember the id of the running container: ```shell -$ docker exec 95d5cc7ba10b4ce6f14712786f8c3c14577d2c470b4e5e34eadeb2777df5f6be +$ docker exec b83bd0a5e49ed82278742f49b1490abd8a84c103fc684cb4b0222a292a6863f5 /bin/ls | grep ".pem" -e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0.pem +7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0.pem ``` Who owns that key controls the validator. Therefore, it is not safe to keep it in the @@ -7425,7 +7431,7 @@ file system. Instead, move it into a safer place: ```shell $ sudo mv /var/lib/docker/volumes/chain/_data/ - e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0.pem + 7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0.pem my_safe_place/ ``` @@ -7445,7 +7451,7 @@ priv_validator_key.json ``` This file must remain in the node, or otherwise Tendermint cannot vote for validation. The Docker script magically ensures that, correctly, this file contains the same key -as `e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0.pem`, although in a different format. +as `7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0.pem`, although in a different format. ## Starting a Tendermint Hotmoka Node on Amazon EC2 @@ -7498,7 +7504,7 @@ ec2$ docker run -dit -p 80:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 init 5f3799b58c6569b50dbebee6db3061ebf8e3c2c7ac6e0882579129ca66302786 @@ -7596,7 +7602,7 @@ ec2$ docker run -dit -p 80:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 start 3335d7609ecbd3d6ad42577aee0d0a2fd1bc59ed3c18ae7da2d77febbd776a84 @@ -7611,13 +7617,13 @@ of `ws://panarea.hotmoka.io`: $ moka info --uri ec2-34-244-119-200.eu-west-1.compute.amazonaws.com Info about the node: - takamakaCode: 776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe - manifest: 323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#0 + takamakaCode: ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42 + manifest: f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#0 chainId: marabunta maxErrorLength: 300 signature: ed25519 ... - gamete: 04355968e61a05f6eb9c2c2c0270cc88cb821b80876d9db351ec83f21391a80b#0 + gamete: 25b310a0ce87dcd6a019e5a081f38ddc9a8812dff7144273f02d06d3824752c8#0 balance: 99999999999999999999... maxFaucet: 10000000000000 ``` @@ -7652,10 +7658,10 @@ total quantity shared among all validator nodes. For instance, when we have show nodes, we have seen information about the only validator in the subsequent form: ```shell - validator #0: e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0 - id: 684CC341743E300E7A0E2718AA15788834526EE8 + validator #0: 7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0 + id: 84694297DB4B75A1B0C810F051035A0D7A8A3D99 balance: 642 - staked: 1923 + staked: 1925 power: 1000000 ``` @@ -7790,7 +7796,7 @@ alice.hotmoka.io$ docker run --rm -dit -p 80:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 init alice.hotmoka.io$ moka bind-key 8oHse15C9pKUuqFLYRQBPgefdGzGq9mpWPF3dRQg27A5 @@ -7820,7 +7826,7 @@ bob.hotmoka.io$ docker run --rm -dit -p 80:8001 -p 26656:26656 -v chain:/home/hotmoka/chain - hotmoka/tendermint-node:1.6.0 + hotmoka/tendermint-node:1.7.0 start 070abbc643163e6273c6d9da98f4a83bd94e178743c31344321a60c41d3c2d21 @@ -7847,7 +7853,7 @@ of the `Offer` class in Figure 37 (with `moka create`) and must then use her validator object as caller of method `place` of the validators object of the blockchain (with `moka call`). That object is advertized in the manifest of the node: ``` -validators: 477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#1 +validators: 9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#1 ``` However, Alice can simplify her work by using the `moka sell-validation` command, that does everything at once for her. There is a little difficulty though. Selling shares is not free, it costs some gas. @@ -8090,7 +8096,7 @@ Hotmoka nodes verify the following static constraints: fields whose type is primitive (`char`, `byte`, `short`, `int`, `long`, `float`, `double` or `boolean`), or is a class that extends `io.takamaka.code.lang.Storage`, - or is an `enum` without instance non-transient fields, or is any of + or is any of `java.math.BigInteger`, `java.lang.String`, `java.lang.Object` or an interface (see [Storage Types and Constraints on Storage Classes](#storage-types-and-constraints-on-storage-classes)). @@ -8106,9 +8112,8 @@ Hotmoka nodes verify the following static constraints: > (`StorageTreeMap`). This second choice > will be erased by using `Storage` as static type of the erased fields of the > class. However, not all storage reference values extend `Storage`. For instance, -> this solution would not allow one to write `StorageTreeMap`, where -> `MyEnum` is an enumeration type with no instance non-transient fields: both -> `MyEnum` and `BigInteger` are storage types, but neither extends `Storage`. +> this solution would not allow one to write `StorageTreeMap`, where +> both `String` and `BigInteger` are storage types, but neither extends `Storage`. > The fact that fields of type `java.lang.Object` or interface actually hold a > storage value at the end of a transaction is checked dynamically (see the > dynamic checks below). @@ -8222,22 +8227,22 @@ Hotmoka nodes verify the following static constraints: > possible to replace class `io.takamaka.code.lang.Contract`, which could thoroughly > revolutionize the execution of the contracts. During the initialization of a node, > that occurs once at its start-up, it is however permitted to install the -> runtime of Takamaka (the `io-takamaka-code-1.3.0.jar` archive used in the examples +> runtime of Takamaka (the `io-takamaka-code-1.3.1.jar` archive used in the examples > in the previous chapters). 23. All referenced classes, constructors, methods and fields must be white-listed. Those from classes installed in the store of the node are always white-listed by default. Other classes loaded from the Java class path must have been explicitly - marked as white-listed in the `io-hotmoka-whitelisting-1.6.0.jar` archive. + marked as white-listed in the `io-hotmoka-whitelisting-1.7.0.jar` archive. > Hence, for instance, the classes of the support library `io.takamaka.code.lang.Storage` > and `io.takamaka.code.lang.Takamaka` are white-listed, since they -> are inside `io-takamaka-code-1.3.0.jar`, that is typically installed in the store of a +> are inside `io-takamaka-code-1.3.1.jar`, that is typically installed in the store of a > node during its initialization. Classes from user > jars installed in the node are similarly white-listed. > Method `java.lang.System.currentTimeMillis()` is not white-listed, > since it is loaded from the Java class path and is not annotated as white-listed -> in `io-takamaka--whitelisting-1.6.0.jar`. +> in `io-takamaka--whitelisting-1.7.0.jar`. 24. Bootstrap methods for the `invokedynamic` bytecode use only standard call-site resolvers, namely, instances of `java.lang.invoke.LambdaMetafactory.metafactory` @@ -8361,13 +8366,13 @@ $ cd family_wrong $ mvn package ``` -Let us start with the verification of `io-takamaka-code-1.3.0.jar`, +Let us start with the verification of `io-takamaka-code-1.3.1.jar`, taken from Maven's cache: ```shell $ cd hotmoka_tutorial $ moka verify - ~/.m2/repository/io/hotmoka/io-takamaka-code/1.3.0/io-takamaka-code-1.3.0.jar + ~/.m2/repository/io/hotmoka/io-takamaka-code/1.3.1/io-takamaka-code-1.3.1.jar --init Verification succeeded ``` @@ -8383,8 +8388,8 @@ installation in a Hotmoka node. For that, we run: ```shell $ mkdir instrumented $ moka instrument - ~/.m2/repository/io/hotmoka/io-takamaka-code/1.3.0/io-takamaka-code-1.3.0.jar - instrumented/io-takamaka-code-1.3.0.jar + ~/.m2/repository/io/hotmoka/io-takamaka-code/1.3.1/io-takamaka-code-1.3.1.jar + instrumented/io-takamaka-code-1.3.1.jar --init ``` @@ -8400,7 +8405,7 @@ refer to an already instrumented jar: $ moka instrument family/target/family-0.0.1.jar instrumented/family-0.0.1.jar - --libs instrumented/io-takamaka-code-1.3.0.jar + --libs instrumented/io-takamaka-code-1.3.1.jar ``` Verification succeeds this time as well, and an instrumented `family-0.0.1.jar` appears in the `instrumented` directory. Note that we have not used the `--init` switch this time, since we @@ -8413,7 +8418,7 @@ be printed on the screen: ```shell $ moka verify family_wrong/target/family_wrong-0.0.1.jar - --libs instrumented/io-takamaka-code-1.3.0.jar + --libs instrumented/io-takamaka-code-1.3.1.jar io/takamaka/family/Person.java field parents: type not allowed for a field of a storage class @@ -8435,7 +8440,7 @@ The same failure occurs with the `instrument` command, that will not generate th $ moka instrument family_wrong/target/family_wrong-0.0.1.jar instrumented/family_wrong-0.0.1.jar - --libs instrumented/io-takamaka-code-1.3.0.jar + --libs instrumented/io-takamaka-code-1.3.1.jar io/takamaka/family/Person.java field parents: type not allowed for a field of a storage class diff --git a/pics/state2.png b/pics/state2.png index f22dec968af5d7be6d30bdf156ab200ea7b99c89..d96c5f52edadbd5056fdd448afe80c2e3e17f3a5 100644 GIT binary patch literal 53364 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 literal 53475 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%0Deq+kO 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 OZQ10p@y>esvHt=S$DPyw diff --git a/pics/state3.png b/pics/state3.png index dee4c9a67ffaffb8d4c449ba6ef3bc492da5563f..fba6c360a3d07a0d0facb71213ced5f6fd832dc3 100644 GIT binary patch literal 57876 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 literal 57929 zcmeFZc|4Tw_dh=4#x2{e5DGUbN@Yn|a~mq8h_oXTQQ4P>8H`p3+>}l0Y zt}&Cb)=xiv*p0ip%1(+SKHvG~gII$~?^?xz&TCR{VBZ~)svDP=A9yoG-ToZuHR^%I zV93Ah-|j_eVt$l>TYun#RW4(U7>ps{!5-`bag|~*IQjzzSrFYo_c2>R45@|0q~#4g z!wO(9yhIKzdiWrnA_fzV6+Q?ex^zw`FDz=htoQ_s5BnN~!JPD5m%Kd&kJkHz6=CWf zH;SA3lrdiSRY6rf3f6sk6obL}tN11eQN5J6KJQj%W&RG@)(N2GD^G!{3KXnklok_4 zssu(*s-!*nD3_uuw@C?H`03ULWei4&O@RI_2~16N$6!qMC^Bi4RM^zUPGd1%cPYe+ zl+3-3$y?trGO{ugA>LEV7z~NuiG$1gLeFl077XTh30O@^wqYq{z+mR3OmrFXq}_OQ ze4GkCfr;vMl$8gAsr5nE3uiFE7|b=V9rS0&r*i!I=`dal6yiQgV)XX~bg~0~K6|4} zK2k#Oy^jpM>wbw~Fc}y`mmW{z+M>B*o8%!X%ECS>ZU+UcpWDNMG1-Yvpr?BM_hSl5 z@C=2x3ngM#ApD=v|Mi%Rnnf@fI6wl=Z|QA!38>`-MQzWHDhC5gZ8M812aA|6Z?VCI zD(5d7|DW^yFX8`){{OcqDr*QPdDP<-gi~WKBkW~Yu2%b_I^NdW&D}eDyd*cKn?|F5 z_BUZ9dwVquZdbb+yb3?;cAW`7_A4M0{HvZPS66U*x;MXVwmxy<+R#^_yf+P)G3Nd? zQ)fIFmh*PU?KW!Utvq+(S)!-Xg0ledSJ!3LV4UQ%V$`QuVnKJ@{xx<{^06)&6Eckt z^iwf2eOM+mOPswmN%wd7&}D?|lm*j`8#TWe3iJqP7hn6Z?{vtffN4>U)j0;?G;0d+ z$NhDWfFUV%Ps@MI^V1Ucp;4@1_otVLkm5o_)Y{=yjC$8aRVF`{m)D%%&oG$GNj)G! zQ4a5*H3hG;bxMu$6DCJTVx1-Dh(o5Eg24E}wTi2YLEB(%cS$Da zjSs0TPuA1%J(d0BFYvhk$K_}sIb79i)Z&d5GR^%pMx6! z@~qzroj$5bFqxHq0|l1KFTL*v-o-3AAEG@E(2^f9WLbNT2&NDnb+UO@NTZ@yX%&^| z+mj$+U_A=*MSOMFa}PM4r;-}60G{;h3qE1ts^B>JSw!d;c3JzTsyk%Bg-^5CQQ;k) ztR&MUl)kPJIU#I!9}f4~l@#|#;ThCDOH@>-0+~Jg68F@}ccHBA9f`62G>cu7m;kB- zmnZF1ZGM-C!yI%%hYR2ZqMr0Bx@i?Ez_qq%MyZmQDnG|lS83QN6M2mdrC}#`Kd4&+ z;qZKAB%$F!BN?rbsOmoUR-U1dZ^40CqPW8F$GPRTx)X0j*bSqnv*PdAx84GzYVN90 z_Q9ITPzXUNO_pchDmVSFV=o9e--(fp%+F~^!aI=sO=fAaIsl;n#)9<>*=BY6#Trh)|9W4<3i*xteBCbx^QQnAXPFc2zHS zl47SL`qqlqO}B%DmqWZSL>jE~3Jez_>vw4y|9DIo20oZmNfq|rd4?eYujfw5&Kzrr zK*rOhXJ4idAmp|^kBTeihFwGhj6*dmrfsKy!RU>m`L6Cm2>E#5^4iWREG#v=AGXv2 z_oVntr?S)iW+&b2l&Q;)q~Z8m;^(k0kzI7l(I<(x`b8f1QR~k|g;3c+6-O>Um?KzV z5LmRUUiO{FUaPq-KtGB}9SPZ*Hoaoc)+Cn}ric;k|V%x6PRaR>@ypCq0BRXEek4hSGxFUU=2? zMn};|%54^zcC1v~RLty&TUnS^M;#E`17!G3(7eLl2``25FkMm*?2b6RWX6_Yv0Rs$tJs8^o(6fmq(11SIQ96C6Aa;v|y%2LKArB#i7DgZvU7% zW$uXK?6Yv?NzGfk@#LfOw1ZD~1PpEv zYu6dxLskZ=q*a{aI1#$UfM8nrVJQ-5ayS5Fy*UmDk7`Nt{_tGf5cKE$?*8OzDD(b# zune6iieDqj%F}o!qI;sEct0x-N%rqdT6mH>&h1o52vp|xXyBdgWv|Ee4qaIge&knj z*9;5X5&$&=2Vrkx zSy*#K)rKB5NowSqLjpz#vN{y3KZ}WoM!lj4%oGfT#@~usBo>U)GkyB*1F08?cD=(3 zz4Vmtdl2abU8+%qO=uXakx@yRU!aLn+Y**gTwJsG#e%;7>S>$2goJ|@?F+GevSYx9 zn|QK52_(g^!x+cT8~6l^uaIR?5^tc=E+fSha?V|t!)N0|uMZ+sysXxt@xVWg44CM+ ztfd|nFicQ(o z$m+j@LhhmN&`goDX_}~v2(9j+5a+skj*AcOfus1O$xC$GL=8K^@)G5=sknC`8oYR# z4orDCU>z{F$N$_<_|tP&%Piexy?4c8p7UKbt2meHz#rEu>~-$X9m$$~emS0POWd8HlS$3uXGvBb zP1x@2?ytO`dmq5gv%#iDpTlxDF6Kyd`?EWN zgp?b57r$rQP-^0Wj#fmI>kbYru~td4R0mt19OFHY8cf__8fosR$6fZ>LT^2J&6|Pe zHfD$2@B_0so%zRYd?I@7^=s49F&o6oUj$<(&8}D4i~^FEh?>-awYNLQwyEn_ zs=2h<=e9X_N(zh~f_-;VG3}1pFfZN5BTCn&uMRUo2Q&-7xgNSCI>#=5woJ8p517iP z0C`wO&SFQ*>#!8xzH9q81@3B9ywFb}Z+K4|ArpHM%z@klC{U@rER3M| zRd<-zyCnDMa@JKGiUGs zfj8AzKPx>?T)0+EC7n=YJlQd$sjrxAWqR){yd8E<=DmSPCzGOuxZ{Taza&rpZd3pQ z2C~vEhJU^<0mX;*AX4M1FYoErdX85)q&>#gQztGNgnS1jw)Qp|;C^lEe?D`LsIhQP zJnrbUA)Nb;Ew^_0{b$~mejpM(t=uU@=EiwmeO7{y5x-k@E;LJQ3{*9jzV|tAJHTxB zfi6{MJSu6yo2(#}VHDyertwF50*DN{2JyG zW3KK_lg_)+ug~z5TNH|u=UF0dHf=Ak(w#|3u1o0a<>8-`OY)u6^oTsg=SFuXk0A*x z)s18PNlC7)V&YSxTC7TA;yp6vMLV)lp9&$m!s|EAUif}dQ^F`n&x%LVGr*bdJG(>u z{v_i!(s!P8CEHduzoq)xe#K=ex&1b52MuZ4iq=tI1b;f!#hvfnxXhCi9J#(Ee8}v+ zQ{t@AMc0eEkKc48C5`sE2&dIVwvSDHm~w>AVgD?RgQxVC;hg0{Zn=9%cc1vz;wvtL zAm@jW%+ow=emcz6IX0CCcDv(6Q^51VH4xF1=7KTN6%p6M zY5zipw&-iN?FzBuYtwggFY}!W%H(!)e{7*2WAo_bqr~^Z?;Ss22O+h~E0y1xZB5z# zXzppPSmEk~>*kfTuu6frh{#-4~-mqlWRtJ0uI{xT&` z0|}=eb#~dFUp3GhR>wa!Hl)^H>fr})Nh6zGbOKkvSRj^@s zomk%-!*D13p%V7f47cVNFpuQdS8SJV@!EB12B@D=?UyB~qn6LN;>9{5d~+f|?lG`v zR7kC}nAG6)_`;w~_2L(8=wXq#l+=|O@guyuaG@e!3l0~U{CWCLKX7-!+D0)%?pSe( z8CTJ-kougTr&aToK0ejZ5Y9j1FDt73h=Bpty-f2K8<$j@LMV1vH>P_4x>*jvO#SO} zaQV8Em+e>8I;KjqOL99NO&!LQ-tPEN-0z3jO`lbm6yA{9E%P#gkP z#>(6}xzH>2)%iVC8B%gsy~|PiqJoCT6K1u@?EPutX-&^J<@V_1K?~wIP}LmW_@B$c zci&y_6p>S*z%w9vYF=9tqT;%nm*w`aGbp{x@2B9NaMltuK3@#?(0KJd@rXRqvO zTMi!M`=OH2TT~7lqAcR2`((NNuZN3JX3#%>l84W>@+?u2SO<`2R%J%qJt~05lBY|0GsiYPA zx0_wZOmw-?g`45Y8-YEu$alSz2R7!LUe!@Ma&E2ef$h*lKjMq+SLi%pOJ4_O0Gm)K zH~0L7%0w-j))lWh`Nze#Rl=|x1i0!iNn!k>~xe>AXRV|wc$)=F}2j2+kXF8JF2Z4MoJb59*8@jXuJsX0c zG6vsL1MZ4bYd7bJ=hYAFzK6=pbr`RvbcISvdK++Dq69YP9^LZI{f20USB zpReU14a*FpLhvd}T>nk=^$p~^@Qh4ypKT`?rF(7X_7=OEf)`@v?QWytkimm-^{XV5 z)ovGoq7&%$`Y}`Qj8Etq0Fq*#wnvvYp^4-ju0=`4VYAZFgLeoCRa397tmGk-khL^U z<;``E(yog5UY@l%HHX2rFvBQb*cCvX#94w+w;*+|TyEB?NhoA?OgvM!>kB871CsFL zGz}-9%n(p4qTS!{xeaux+u!=Ai{tV}2r5^t%!V$Rqq_k5hp^?4`$MZ(#p+QYzZzO1 zYK(fEwu0LXJf~)o2wg5*tluzdyKhL+T@*4+?B_;ww-%PVK%6mtX?vo&D3QP1f%9O$y2rhNG<6}Mk~ zLpXhv6u!i{rg@#Z6OrJp4hO7~IChvV7kl=rq$26?<%9E?ak(R=YJCmCRLnF8)o;lAW+8p|XD8p$c?bgyVf zUfvIK*V{~|YVh5$M{_*h4kNFVh92)50gzjkZb{i;sN;JL;olFXLTj3^r3@B^Q@Bxg z(9}iu1qs*L>{5u=ef}{=On~0yn_G$P>zx;MV`}Xl_EvzV^)x38*R2A*)g!e(qQ_9R z^PjDD(q*4jj%D1rY&8@t#1UH*>$T#`hwh{E{FXmhzh}S*#RK)O`v%sPkL(osp4um| zSzhD7SLb;~>y@;Tg~=t|Ce`q^rw!@h9c+hMVw7eEfkCqJyZT)(m^d;o_hpSfy+5nh zpsh$}stdbFrA&1!L7ZUpq@KKk1G*bb*K6&aK=lPK3!PZ@T*;92gzIeI*xUMp-D){)Ikvl0jp=dm}mMGDp;%oGK~cv-Th%rb8$4ey&B z^{aC=Zr|8DZm09c_c2S}%{j+{R{^7YuLECKy;!q)WHjrH*aNze*X2=slIeS4{k@*{ z)2C*sXP!15wTicjFuW|Jz+C)|Q+(e8yN58Z+?dwixO?_9651x*>apq1)5|j5A6k3x z^_S|=-Pr-zzHW5O!o_ZzJ$)YGKke+rm$93Y&BYVDeT+qK%4LR2Jo^pUu)g1y&Bk98UL^|2XfrM%t|U7?-N#j}9D{M(A*WO2epbOY>=qpW}6S$@wkA+}3m z!{DfSt##Ns(>~*;4fjvK(q(zRimNttH_gE(^@%y@Y`na6Xz-Qy#jBcOudni4f7c$@ zZJYbK`tx7DPcZzFBmcycea6ITIR|Heq!nK(sS8bLn6?Tq6bUkL`yw28;aF|AF?q;C zhCA!5wC)bneV`>C6#bw>r0x_$wdc8>AsGkwRd1opm26dZdKvI0wFpdoYWtamOH?v} zxwj9TuDOoJcW8mfl_!6q=ZgH<{t>=)vp8dpNCB(jh3NB!jc-p06n=v)oroYDuyxhE z%7~7n5T!+6>f96IcjY5|E8w2R2~PF{W(1N-kJlJ*V)i!@j(E=~Z&#DH<_uXP9uE)0 zCwPAJ-)$H#a;QaxjSo%K*5>c4 zG%rUgCI*WRjx}(5{HsN3fp}|QVmv#=6;@|^8U%dDEJQbhaR(BBue0fhkYM4mN8|kZ zfBkqsC`65tP;>t%K?{(^9-zNx;rZ*;-Ob0Z*&QASD4B&xkbD3{dbn*En5Dva zs9RsawRi`;tqZP=aVrZ(v56_Xi4{P_@YDVM|0iDPmjcBfVEiW$_EMf12CnbTy|(wl zpK9LrYq5BtJ_Rp`B)y$DVcdHw!FN{Vby1GOu31BVJZ2I_;I>YNsyZwUB=e%kiVx(a zY&!rr%2NKbax}k1*$RMaJ4grixJvxjjAV42o!?R{`*zU~P3cW8tRqrNmnd;h=9R<7 z|JXWasd*Zhm(?}AaufJ>+%O__AF$mk+qXnY-?5!knp|i>C{JR6Vyc()Uq-lBNrh~M zjJp{(f6zNYBYCqG zdS>A_MGCq8nPdBz`~RTlj8JC($BWNbNKe`Dxc@QeGLm5i#P1SQ8J3r%`#b3wB*PMj zZ&aWJL%ds(MCZ^Cg-n2*|9~Q-I4!(MBO@Yy+M~JT1^7ps$;>c`@i_b-_w6O`>*k!(BYMKQZgI& z$!&LlqN|w6ybP29{r@7=3cfHWiv%#osmRmK{nHD8pCm?N{~Fh8#EY$Vwj|&t-Cqki zM7W-HEJPX7VvXqXUvtPn`|FNWxE2KwfedBF_e^uBvN4$KD(s+vD!ggu% z58Fe)L_T8%7Eg*|p^*lIDF+wVo*w8)dgaHj6ubo5@%L3uKWj=yVfQ7&a^~(n?0__|_4)n&stncdF`Wod9Gn>GGdk+ZkK-{)iZG^xGSGS+L|0wjGV1$OQgu4k zDj^`OvW&2`{d{Y*~!x2rb}4eUe63tg>MDkFne zxC$!cF924O_Xy>t+c%6gi2lHZ@q+!d`B_ACHYt75hqm6$Vtvm3k zoiXXX+$H|Rm5NI}Ki#-=cTnw;)?qj1qIZf1E;)2wn9D{hd$On@yhG2#yk}7E`5`=G zTfaG{8%JDUV#VQ+!2(XDg5y^&o-?-jrE#wx2>tZ?-Az_Mr+V@H#99e`hikbeOvORa zf?m%dky&eIhVp9lA7V=Ko#d`JyZGu2i(T~{EQ!bR zG!}@ToOoUixY*gp2usp8g2-zZQUfR(y2}LkvZeMOP|a#;v&>`-Kg;x$P(80w>`~9b zOGrQeq;xYLjkkpY0j5yf%S! z&6U?dtCh|nGV=mPN3tU6jGHp9XSd6J;Y;t2hm@%Gm~<}Fw1rxtKgdX3!EE-zk|qIcau7B<4UY^4U*BpkU?ai;?L(r zL2uqxF|A3yR@nK>wtjz`vPf(MQF8j}GWN;D%R^R`y>=YI2K_){LtT#p!ePLlzqBgg zK4EEi@#?!CQ&3D~y;!ckUNx#td(sK}L^=G)(enFLPS=WBMa^R6#(-FT zKBdU%=AWy$$XOy$FZi}nwCmcsZfVL`hrqyQsTq?qem0jve1@KMAKeq!oR4G`YU2|G zj4EuGh-*S;GJG$*)RrFvJf~A2D|o-F302AXC|>j3rGDU8!yP=%g3_3o_mhU>G#(!x zbW)qmcI>ZK&bn=w6`Zu&rWG{(rMR>At?hXlsr~%3Ih>i#Nj^e&{oppFO~dr%iNdQfiSh9KWDge>_j z+Fso`v?u8P%y~y10*)*F%P{d9F{==RzDy?qN(2+*9Fotj;>F9~#muXtsU(@X2jdU0dDq*T$~4Da1RPXOS&PW@ znn_(fs`+Y4_kMFmfj=TNQ)A|!gUGK>?}>=*{no-u>&9&H-VJsqM-1lErUMp1~# z?C8>Z#Bpt;-RNmGP9fS`hDw^YK1 zsw8;D>l`Po_&(kw*Rjuf5o^vB+T)M+2t6c<7;>lP2 z>ygl#3cK<8 zf4f}a(F>ZUK6ajv-LI#DJQz!X0<+7VP8d>B*Fxj1k0TSNA@N8@9mPw`iEVPLN5lx9 z5Z3dNK>i&Q|F(UUwwpliW8eHd?9VcQ79SsGED`JKHK|Up>rDelrM#5eVE`CU^hqmD zzdEs7Ba(M9J%GRJDVCP@Nb}U=iq;3bX_m#OV+2=8S1n0ly{{iTK2+Y<(n^_4dF_4R z+o7Z{I=-~Y>kmZVdXC=rgX*50Tfs$^&$J*7enB1|&Nw0sl@_}y?!~yag%C(-6l~jj z@Q?+;{AL`;r$@z;^LcRp+D48I5m&MoseQN02&;$>lY zT-tgB6{n;naAu&9;-e+-webfgrd9do5h<#dK!I56TQH<4K^p*uYJf=mnxwZr_2fSSzn6M=I%RZ`+f@?P0hDHdY3{Rj*C_ zo}Q(!C8CsX9M!8ks!oi5c~6<$hK$wI)e449k0H2)7v9itBe!Xw}d& z0vOFTPR|n)r}VWC`^7@O6s0L(pTkCA@x3dzC|G3ys{D^+0BQr>mB#<8T?Q@ zduUG(c(T!tg}9fHt{!_^T;Lieb>R26%spCdw6>r&|iJ(j3Ax5KJoS{J`kP49H> zX4WJm2&~`?B`ldH-F(cNK)0e}*4nQ`CN?-=*RQP4Hg0+HP=&O&LO~&FATgG8^$WuB z8=~%W_`+&>l(Xey!_oaBAxGXI;V+&A=YK&OP){d@7|8XiX6sr}Rt%%|+s_9pgc)23 zVaA)_?6N%7+3X|>27lTMcUQ% zQ1X}K!=|Vu(-pYBbl1Ny6ofROjaqA)v2f9hqx0RvO1A{^H&P+rF-AFoKp9R!vwEUu zqd6fV0!<9D{pz=+`BrdAgoOD`Po2YsKMdOvyr9vq^v|HI`vjqvPbBHQ+C8(aIUTt@ zZV-Fz@;Oafdq*W{b(QqK(YW+r$@{I~rWX9pRFpqDWybNitvGanSaH;2 zvv*OBO`d07wj)L0wL`ve5&NRD9$!9hbHvlzTJ5i84jibut%Xl;RAoJ;R2CDq>GIi= zJga)rhNx=|I~e)gAmCg$-Uv*b5-T(GkzMubOJ3Is=H*eGlr*&WkQ{XAizRF=frvudwd5_J2CQW;btC)L_sJQXe6+57$u*Sjllg8;n}o@@~T zE!2QWDM2w4_qhx7K$^iN^;HI~%@@T7@E^9)l;&XqtQeE4W1HVkkSp`#@p%xVNIuPE z{aH^bZ#?X4fLlQWYfFsqDNdQA{9Yc1?@yTx#?E)0UV8JSLx5&=Y)wD6* zgoGZn=<$`2@m%0oQjklU;As4Py+ zIq01c@&!*?R;IGSXo!-6J42a$<)8|?GHCl9D3(U!?%x~UM-d@9%Q~>=cQU8V0?}0@ zNvRK1>loi1;_`cK1N)ApkRLtR>M2--qX{pb_PxB{V=FK1Njh*wVN-4?!{UQM?nBR3 z(1}%tU;=sC2T?pD>z`5%Z>Tj@r-Q##};UVM6oI4x|? zE`wx(NptIvU9XG4zWTe%JPk)pKs5ESppqu;G#ObuzNw9h{h0I(Uky*;so*`!8Bhe{ zjS~&==3!7J60`&D+R=I?Z}V|fohkG}u&a#Db{Kkb+S1?xuLt)q&qblWa&3`EoVc_&S(SvA22|_7BqVkhJ=SUZn!CgzL56LPE3f; zJ#;0_SLpPESiKdTVxpv{MH1^qriI9zpK?NXKeq2)D1Q&MvWR{AVOBbnS`)@x8~ZQ4 z+arMZ+G1ie;V!IsJ1ZDDlzx8_7`S1)O0vA}-Jm$kJg$Gy+BpdFl?WHYCAyULy_{tP7?ZxR z!@0Ei1Nsh_gBe>5r#Caccg`l&*R7;%n`r$XfcLUYVZA$jBlFUrbk9X5Qny0<7 zw`^*be15@mclG`^a%SvQP8#@zBUNz%z0>dq7pZ6fn+H5j32`aYDUu-qII!os(_3if z(vWu2w56p=_UWMoqTC94L|I>~J59ZiR4AbbM^4l4RO3LRUE)<5;?YX&*T108uN7a# zgX65{E{GVWiX9@E8!u^Jzxhh&XZS4fZqtUBAw!K{nfPMbGus3}0j9!;o&8@P@atHS zE2j+)sxPIMg6V93(7M7js99xfI*e%TEtmfvOx&bCnuh5CA{pTnjz4Id z^c=S4{?dzS;>Ukrb<9#b6}NFn^%I>yuHt`Q3~O=4;^_bL+BOE4p!P3Z^$)ndji#Y} zO=xQ;dRt-(UqyS2{?7HkFa6&N;+Z%a>u<_m^t$Kll9ICXLvGM#c*^s5VwDZS^FJbf zwueC8dEO|s<6*1p8S|+-Ew5SpJ{>XOmeb3Y%vx!$0xs4dykq;`!j=-?OM% zppRr^b%{9U^vYhcU-=B48@&>_g4P02E7BE4?QU@e$CQ~VS!8=ACtq4|un=-u|J|ZY zA6p&ORnt~f^v!mw`xPx6dP7kcW1%t|Vl=O`B~APA?IqL=q$xL@fdl!_gb}q%O!Oba zc&iBOmd*>O>3K%hST+~r6&mrzT~pp8ZJfC5bsDBzw-QGl}AV{yA1wHyVvpq?bj4UYig)D-kZmAn-D-E?-S$enlhJ%0(F0% zMG~g1qmJ755W+7%R`_>e&sT7xf_4L&R2DkqzYgyq_0j_?KNR*wv6rrPRC^TswyI;1e!BZ*om= z^vRy9z?{8Y@hg)7;1;)V@y3&LO)%QvlJwcpInX>fUvxpp_W)0GE1)Wobq{uZpyjK{?{am_G_6dpV^G|?yW2a( zHORj79daOhb0vSGZxFzIByDd>wBLBtpWM}5$i>?KmT$vNW7Mz~G2&>cf^! zQ45)cdG8nc-3(T6ZILJQZsJssoq&B{Sx};r&$CL#z|R`+waLq)ee%+i(#>7UGC@n= zNA#jqD_Vv{3wm0i2w49MFJ3R&B+{cASdG%wy$GfH)~7r}+on0{bT6^|xLlM~|RZv43y zXw#?MT0u2F5HFNn>^QhSv0b6sE=N8@krsm|AvCcunoj8%^mAhJ;p2+Rbt+cJ%rDSz zclMYK0GTJKq4B9_7?%`|SA%ip=Sw)L_q)k~W$*_DW^`^h-QqhpX_25(uTYCLJuKRr#_`Mbj^IU;j5xP5beXM z*Y;pMrD;qd&QeaHYg*dyZt!@ROC{myqpDn=LMi>;517{b>#xSso_G9*7=TwxFYxE*k&o|xP>4Zf3n5~3%Jq;(K)xiD!ame!thzvx|VOPqHSCv|% z8^#}FZ6c2Ve_UzH3NE+eLhWZ5)a(b+m$5J7zV+E1d|lJZD}J#hZ)A|s$!*D_^xBdQ z%rVtA{C+^ZKNO#U-YILwseS~R7t}NUoZHW;@j`u{R0e^Z>#(KT6KM%C^Li8_od8xo zN9>?q#hbLFLG+7#qzQshK|AiF*e=BrPcqC&=+(>Z(s=W4po1!hR?}S-M*#aYZ{6M) zXukm4&s4}Mw0k5^;cg9TZ1{&;QgO|LQq*n;%*De;hT}l!2Z?X?nL#VgX0~P*4^nnEoHBUTNf+r|zd@C9 z+wsx%F{B7{%qp-hh7m|RU`zEeaU@{0OT+Q&{Lv8rjbim^;VSl_y4l@Ey*nBe8rw$! zqXD33z5cFWXrG86;Xq*+ly&c0$(17~DF^OZuKEQw|3^UMcp>!(`9xhtN(BMznSW50 zXx<2_xuFnoda-qC9*Uejah9t$RqUaE88?g7Tl(3hx@XP#qRd+H6GW&Ju6FO8&mGV& z*o~HpGx?L%JU$Xg{Qw%7ZF7ylOjo-S?>(HjCt#ysiYe^T^P+8Bgy+ z?9e;BTb&T^8^LUb66Jmer^u2LeA4>D$Q9#&O;uJx!ev#%-lgQ-5dSp9N+%pIFVx0u zb-UPWf!L^Z3JTIiD9^3_!{RScwqa_H_W*-7bxu= zP8+-`$h=!vW3MR#mE`JK5p!4Um@A`#j~z=obW4+2q^M@>>ZDM z-Sq796N1%*MtHNRIPO0?+Z!6XRsbOx&?(q;jW2!qOW4kaptJ~OI$GxG{M$l#KXs>M zngo^vy@A1$b&K+1FhE>o!N{=E5*+DUBaqiW>(+jIM2!jyTb&oP7&F#+&u zvv71Ze_`o~K_^GCp>10k{z)J^PyIT_OcG^YA%%G+$yT5K_VX^x6mpnZfa70bOcBVJ z&0Qp&LUStc-v)+kypA8;KfOrI0G4?SdHw`8y*=QotIvBHl{4bKk%s*9n>fvwMdI)) z3i0rt$i3QN6}Ma+PMA7XEIW+H`QBYT;+=#v3;>aTBJgK9OW53lKkzsSg(CvO6F?ek z*VGl5yuxr5ZEXGwDi9Qf#lnW!WXy=ArCWrJDbnj>CGm*I}chEaX`o@E@;>&W_#>JmCCL4fm%BTM3?!G zY_@8~yI`hstU2{nn8XZ2ZDZ5oMknu$PrXd7|JaR}@>0DdN91Y;;&lk-?cLb#z(H@4 zpsn`p)yF8$1_vjm;)(p*-rxRfIMPrY;h6=Q8I>&WKu@VMx!!=J*Bk%z0&Aj-T;{haSg*ZYniv&DKXL_W$awC+K_IPH7HwQ{-s>9# zZagI9vKdrmdi~Us-TEHQ62={&wXoEGrHS)Im>`1N zYs+&@^L)hU422?Did%e^cT=TjPJT zL$t5x|4o|wObuyJ7};3&?5q2dYZ1}C!eBe-3{u(u4NuMSTb?DQS$l}Mq8T}sQH ze~F&KCrm86siuqrcb4hk_WgWff+ohzcBi8W&RyC^(Qaj~o;sxRp8B7{{a!tEXR zl>SYKUL#WHi&Z2|{a75tYWjj7ry4K{>zpL{Aa+d+RaO5oiS|Fp*f8>H;>jj1-(p_% z2~dcqz;?D4+c{$SObCQQn^?Bj+ziq-)~-@<@R=|)mfLs#O9iMSk3;M7>Viu-o$UWE zCLCgQPm4QV{8Yy%3XZK?4ooewHXxX!tfT_nx+@!3x`55XG!z6dw>mwY<-j?RKS1L+lZN3U@w}WjbYtnG|awQZbm)T3`syI31 zi?mg+y~EC?wasX%V(4+{250f;;QrPF*ozy+(+3q9Z1~{7Ou{^t_Q10LrDZ_6h=;6j zjl;+18|Sk-S^u?!5GbY5o?F7U5wy8W;ogKlKR!I;%V7zRzJ|Kr5fbu#jIUO9vZCcI zlg|PyAn(Y|<2k8N<%8~WB;m`EoExhovyW;20vF6HUWJdZW`2eA?U`>4M%ajF{75}C zP;JQAF7F^IKBayo;ZuLKopetKUP$&(-{Tda_H4D8k`3Ao^EK#5P1=hWeh^9HZzg>R z<`9{bK@!RJxK8N||Xc{}LuAPsfqS((goI(%Y8G>Y14%;lOVS`=E*$Q+w9VA+{W zB%VU_)BG(mSPAa=HW7ZI+dSO0Qs!+uHIltwa+NfR?RAQJ!6uL+l2*9W^J%1G8vA#O z0wNWesoYT0zz7&HPfZ=Ha5SdLG5-lzv=m^?fnU!cr|Ik#(8&wM=Zm9eQlXQ}<4$JU zua5Iww_vA;4z5l)!IfVXQ;pW75h)&5NZnkR-ch~baZXOyjWJ>L_g%IV9R@Vr?Ej3y z5ojj7V4v(M+ntg~El-wpXtO9ge~0^y$j5Upl)|+iY4<+x$`r`VLIsIdC_BgPa^nYq zc_WMl4Wwyqwj8dovVyHWifqS(4x&F?vz0{U`q%UHjMFH~q%NETzH`Puk86`Dw46`B57 z_zsvOV(3-Znk(^@<;W^Y46Pi7K0(4^$?({*dKE?6)V0RSsB?0MPG8Au`v8P2^8{|~ zLF-5;VMUt zdO_dB*-_wFYW{+;%!Sjf?QcSngs?-7UYt|8!vvDKtj^cYexOS>{a~jbkIXRo3mVa^ zjQ_g(U?f4-&r;H#)2T#QBWDP3(`QW<{*3HxT{tU_sS!Q8LR!G~dUsT6Z;`{}?p(L} zs@RQ2=<$ww>+)GvNNc&Lc2T=5cY@>oMt`Y(2g}Uyjs`P;^o??k_;SAIx6+`~je%*d zvZneHLIyO zkxhh7Klygy9QMTF`iclN$GOSWXR|LXiq^Kj@uL6P$RHHH96 z{2$W3JRIsT`k&r-7x7jq3Nu=XLMi)? zlI%ES?m9DG&!#FLYo5uGaeGiIb3 zy^<-J_b1U8hbbTyckbBz0i&`$%dyTSUkj6zb;)cSsST8jUj5Z~$xY5zvjI%@#Pe8H zA8uJen}yY*V6NlCWgEh)znYQRhroKu_AQJ%n6`FB&w)F)eui8)xmoI1TBbCwRA1+8 z(TVhLux&Q#$?_ois;|+>zk`LhpSBo?d}^N1y#m|vu}v&L8GT83_IYkzDP>ZX#BvV> zSyq(5{TpP}XIj3%ZVK+VMU;>N+?4baxf?)LEWe`(mQ!Z2q&xD5$A9 z`0AsGy>id+UC_IQ?K8UxRtxBA`}z&UZL3KRL0e95R?<94!h0P#BpraQeTitsmdnkH z$$l&qe{S(g?(Gx+>V1PBezk6qj7BK2`2U#44I0k-24CaU? z?au`djct0yHd`Ii^FQTEoar&UCu}Vx`_aLwAHg~S^J~ua@Etz8`_f%F-)`AmKWzE3 zD+Su>AZ}pNzpw1;W-OCk_2y!t4^H`$+4#b*F#x_uZKM8T*_--4>oc>!b`t$_xdti3 zcrSw@IN0MbF$|ejl)hdvA@49OoObZHy)lW*6yEZSuKfA{hZb_D(RK@XoSt`Iv2i-} z;l5rOco(I!`AO+A0TScs=Nxx`^NMf>2c0$t*Y`D>wymq^D+m?>DQ8|Z+{N2lg|;+W zq`~M}JhoW{KE@`8oV~Qopn>ePu<_f@JvI5VV}PS+&ugDh-z?%W(iWvJ$}>aDl?e4f zS*E5ST`}$_YqM12DI&f74>Ru|>kc4Md*fwgn!dcgKZY~-^11S{BN9S5~+^BAbJid77Md&&BA!P5F}*+kjvYyWx`US14M zI%+uR0EQFc&zClEKJPp!C%*k{!U$Jc~^Gb z?xM$%zD!ErA4ReoE998(RMY8$Ke2F}L$-1`{%%tQc%&(+f~7K2zBr!@{fX&-`lN)- z{<}W@Sn&FGAhG%#VJ-S#^=;YM1}_fn5#r=c z`J+m})x+Gd@0I?-3uQke`F@Kg!+Y5k02GGEX59c8ro)s!SD)FJ_x40^Ce<&2)X+B% z%^WCE=y&z+Ug^JdS}rdF@z1do+oCHen43w2yD^-X5RD)F*fc!7!1;6Z02DStX&W$K z1A_x_ssLNVOBnQPOLn}!U(8tGKtWxrk!%(|<&O_USVPs1b4DnMYV0e#8V$@k6hS2b z`6`1%lc;X(AzXuPH`^Bc@jlKz*Iuick<5qIt_E@I+EZkOHd4UAxCu-6=GXU#;Vs8K z!qylGhE1uZ`{s}8!`CfaelL7AFKDw9>rEVu6n-sj8XYE2#NVtonn9!A2QI%&-E(Wp zN76S;MAK>eTL%_h^kyE-(&!Fw>2&jBlfa`f-yu?A7a211S{g)A0JlH#>+FBLRC(Gr zb&BcpC|zku9Q783v~b2~huqm;@3U}bI_#bB&%Zvap436dc4x7Nc3o59V<%UZ`Gidj zw@x0t{ordfYpapiGUWiVFHbBNQ4))9T=RGSLcY92Zr*mDeK%ic*IYgF?Qne8E3Y@9 zO9mev39vt#xqbA)>kq&0s`$51*8H7g;faav_Q{VIzLNW{0N@s6YC z-kCpQfLxTZPE4e~@)JUn760~->M9y)uy78`hu>O@nn61Y1N;wzdAniORnk?ON$r#Z zxh5WeC%MTm694*tb$1{{!>Z?>VHLQ+8I|uvd(UwbIj8|HaUUOp%LZV2 z$!!M21Eah+2+)>ZfhTF@SWeOaedSB^txM-VO_4qP?r&y4+kZG$6#ebcT>s}Iksngm z*BJo*Cse_ed$BBf{JYQb?>X2ZNVSHuDf5R~j}R6w0dTc!FNpjmk>d4d*Kda+_MZQs zbO|-zBRXnOTUB|Z#T2gL*gb|)hCgt{e2Sn$i{)q=zC%I}<1KUNcnluPTBokE{8Dxd zx|_f7G`*)U9k;WK8uE!}y&Glq$}3&wJFc0RS&eYC#=%Y`mu^!duUXJ10?XvK)J_ zlp&KZmVf8Woe@e_R(uDH-O>D1N&E?x&U+KCpizM#BXwX%lu_wHhBP#mLdd`YaJtZ! zp~0Ii6t4nIjF1W=x8A^I45;-r;_rX!)Z!b+j}xM;9VO>K@72QII6OP*@sg=QN+AFY z6#8@+;KzARSafD187yDFu$Wg1f7XKMo2zZo8dY;+HNo5-CGwbk4=PMSlieW()tP3s zeJzR(5?eiz+Yha_B^3dH1OT=dBYCz4R=_f!DolWz5+2ih(S@!c0}=v-?Cpwfh4La( znH1Y8GCMX306%J^Awf$kG5*L`)yGKx6&}MXP7(cO5f%pvCtlbli)ZNQ8sNchx$uTb z`HdBJ=e07GU8%7LYL!>5XK~coG{@|sVbx}k*R@%hO&c}I+NgLjM(q29RH;_Q4w|G` z%F~XJ%Ueb${b|?2P;#Lwmo`3N8tvaZ5!NGoQ)hcS6kWIy%M6sJsb<~6hwos66J{(}(T$v}9RLU;RdmL}s@Qx<3pzbG# zAT`P|Hkt94W;0QahDY*6Zy_%i8Sl=lu{xZ6#cIQ1n^&u&^EP5Nr!VWobx2x0budKm zPl>bo=9Hd3c!AD0HHT^IrHLKZLJ`leXNNjp9{6OH&(!TyzVV#A5C-C=Tpl1w zA}Ij_%8fQnC*s?o6v}Dk==Sw_hYSzweW|CT#U6T4GU4Xirm}kT>UWw|a<$2L3u~|; z50{Pz`wKm(pU~=GV%HmejwYn-M9iRfVwGfRcBcIcSaV{^tI)b+gh5S6VQy{+f)?>9TtBMlSK_V?DU zJ9=a12KkQP15$m#9p@h<@$z*mU?FRo&9dw3(%gb5moIwuUHrWqV0d6-NKYQ(412MA z_rNc~lK5);nl^n&l|bM8Eba;P8PHZv&KrDY_d?;KW(c5rGRbYf^$OOa?DTPuoo z{-FmzZg|Q+3f^WRJiskXobuOVQEZ)Y%@|G7)fT7P={#$6M)x`)G(FabfXl@`;Awr>V$cbor^l zeG_D_APTtD_+Gl+V*bczgc7zK%|0^Qrwo?Pk@`V}BCjmflQ=L*^U6>X8ThS>u*ufUi(A9D19KfzihA8TMwQ(o?X}iS zU*f6{F5B|Tk{gTj{T{5Z!fIN-)67xalC`6f!uCF3-! zC+s62Y)OVqiwCUloRlzf<*~Qp1MOoB3d9_M%+Z==}xle}Fav)s<`$TpU zmwny*lm9W9Go%;Dy1Sl*UAImTQ_2>g$$g`N2=0(}8?1jrZN3y+|U-oEUdS#?U-@RjhCc>Dako$OAsOo?H_$0-4ktPXm}T2eab0x zVn55MZuJpm8L2KJ{^QX}a$-J*>}Yaaaq<*5&0A{gT-f4rn*UCfl0G6%j5B=r)j)5+eM2?{#}`oDNy)k}ms0dG$*yGu&$tmbsbe8JK%t_@L4;;$b);5JxbJEB$3i z?Fi7h|KGm=IJeO5f2zue$8MSjxMm6`04Dt8V^Wj#!Kf;NB5;D<{#!&BgH!;@#w<*= zuXU^xpzWW(GTNm7RJ{>>Ea7j%xxXBA{htfy{-+^Ps25D>Z_!fFCjju72f|hrMw7u^ za~?uF=6@DZL~q5cnsOX>O6vW5_%ZnNr-fMv%r2H1^nkVEc2LpB~DSnFuzoF&eoqD&1{r%{R}`mh&bFI zp|t`pF;7G32<7?~G1c}*uKka|uQKz$nt@-Jh+S^~QNKc5uOmpbPHc{sk6ei~o&{+} z$o5i*#H=U)AL6XkxZFk-8&$^{1EAs;J8?XrS*&;fNB(moNJj^X{al3tntc682bA{F zbvaOccI;X3-M1H!S%cZ)9spdj-e+)Z)ShZqdl{_DF^At=>^?b5 z{s@32wyZ$S-Xmg^j()A@O8l3(TzSN-;6Gtyw$KaFlqhI8f+G>5w46` z+UraKu+~H&?ealxoTU+q^gU0sw}Wop*u%W())iSm_|O7(QFlXd8^1e8m0$S(kJZv}t^AbmO`dbzVMQ_Ey=lHB>! zNC?@l)4#2yd+!^12BK*tB(FCJ9c1igMOmuM z`js*w5K|9utBs|llFO|Uo+<+ge8BlI{f@_-y?^-_ zRRBC<53@d{46~TXG>VQyjH8F{G37p}kMs`2`!?2-3IhpF?%WNWAw z@3p&Lt9}zWi$R5A!MCI^~L+s^q;?`JKBK+%^D2i9t&qyuvrHXnX%JtHJXB(Cp2_!&Fnz zH6uDY`<`-w0Y9Iv1r%oD+!HyQPjTO=bwLtF&5n(FOz$0N=}~wP*uuWtWH<7Xd`E|} z+pYG%7m(5jZZ|^V&h8xAe+5oYEmu0{ytp$V%d-30+@I}r{l+I4JQ5`v%(`h3k)us5S(-teSGScdilD;NksCMvYYwccXuS% z6pVO^pvfiRHof=QJ7m)gmU<2J0v_{oM@FgWsbiVD3dnX0JNY@s2B`BI*~B%JPmdRo z#ePr2rtq>qKawy!!EXLOt09HtDkEL;V*xc>?eI^pmdRp&%5rF9wse42EEpvglxk9W z7I_b+eDJL^aB@gLCycjdet8x%-pFel=bqNSvj2=aF-8s4xHdXM%MGo!ahP+EfH2te z*p%rP_SN?!oZ5^}cSBc9mM^tN)p~026!T!b)+`Z6JE0=#5A@a}%-`+*XMH5XnlIn}fS-_pjS9uAyP>i}Gu_>jiQlLT z9ly$u1A|(fImrN~p{8*=jxaomfiJv!zjYBA&TFlGDUpEk__cZQ#J40sDo zg>VeEkU7lio%avJo;@Z5X2{~f?N-D=qxmam@C9y~(dQ9iZ$HzYRGwVm2>q?9Na?%e;d`~G`rRp`Z z1|s+mGC!Ujt84eppdVW~v{M>D3r@tgzFrgX6~nV{v_xMlWd|qPjns17&`w(6HI~1k z22|o@*|QiKdqu$sW6IP=-&CC8esek+J%#I$lRNonSh!UqhDfia!OupiswVz)Tl7Vc z%W0dQmP>iQvfDsBQb`%0ysQQV{P!G5aPTXBcdHUU za@#u%$sV-5Ni8O6jg=8iN`rGAHUb5)ZpqU`vErPKQU~h7)Yo09vO34Mraa+QvAk3%YV%NM5BAD!tl|-YX%?^8)AtWx;^}R(*Tx5~5OJ5VC1*VMZup z5@nHxPK_-arf}=UI6gQ`)5Ub8zrIgJ3wzJu2MI*{y#yiXa}=ybAKwh{bj*d(O!Ku3 zL(q(otB3WMZ!2fE^4<+8fIO*tmn5+%0COn7>Km+`xR3M`$hid#uEs3j5OLypr`R;o zXUAQGKz(L^8c7!cl!BL^Qz#49nq-bVh`nsf+igO`1<7Sokm*nk_BVB{oxf4{9fl8W zx7x+XggoP+4t0r{Zy@ihjLv?j*r>-@|B)rk8Jiblv=LUzM0 z!^a@!x_6NY?ZX5Wvkemuwmj0AmK-|j8c?7XCyE0gMghylDVx>FlIyH4`FsKIq|vK9 zc_AmVX35=Z>T42gk`0n+hmT-m5~yF1P*#2xX{a&GgpKPv=kpzon)IoVIjW0hyN|rM zdbNF1?DR*y|2FRwzBenU>wWOyi}BFL8tgp+?E-pX^59S#Bu`x%=o2&co;}%c>k3Qy z)vxt4S}CO0TLQ`{n)YZ8j^ovsiS^{He?drSKVjT=clA0WUPgj+16!Y?jC&eDrm+g;P`8@1DC?rD zWV^2hwd&X0IgO@JNs;R~NkXlG!!o?!XPbP;S&}2OI$;UAP8Hg|Thdr{m{M-q26+kFH%u3}T8Mx{&&jov%oLe`a3_=&S|0DNij z`w7ZBb&I3LnsETrW;xGyP!_GbVpSCBI&#sVr}gV4pLWMAI%GuX_f`0wijCQt&e%?B zfo;Jv#dhL7Wcto-hbpP|h2e#!8gY#^^uE*@m}gOje*tATC5 zYR*L_UP@Z@nbnK^z20()_T@Y>Fp?>bf1tz0Rl1cEgAhaYwB}cPI8Du;nx|Bv?s6W=M>T%G6z;uEy-Xj?KBcQB z>w^ywKjJ=od;x@Z+Il`rLTSzPeze>Qy+K#@(sSJX5iuW;kHDoVBMa`%W;;$Es)4J& zyOlxM7&Xz70ygc%=f?KF7~wLD3j2iD@*eU7TAyQ+*B`4inW7mf0$VF9Q#9f&*m?mPEQ;>kEs@s~9;Q#>F6v*z z{)9JZl#Y6{jr%_-Ua>LJNxJM}tfAOZUB;pWO7)LYa%KTRR?WH_o{%dfc;;F?Cu`sb zvR~jpN#okq+Sbt8+w)2elgk@TCr8iQ58?_#CHrJk7&Q$AlAEj(@I_5M;icJyL= zp=8ylxGLvfDEP*Kxnf;El$9l_dRzL&wTgmeZuYD%ypF{~J|oS%hc`%B-gVpi<94;F z5AI3aGm|t3mF5t$l`Lb&i`M~En+m}8+X$;<;M3_IPO*HvBI~J%`#}fxu|wb}Lb9nb zwUo_Rr@f-Rw~%kwZXs+^cJUo)_Rvg59y7VqhD~g{k^N06Tk5|h+Bxki)&Ls&M@V|0 zZf}zcGim^OF8vmH1 z_9l;{&uBHf`%Zp(PGVl+kTVwzZ^tUVEtj1rAmX+wZe!C54LlEfZZva{t7KAmyA_X* zP+V1J9@@wftzH4RvXh_p(5?W0K!@<5K1EZAwFUE%pPt~CDnCBoHZ@K*_Wka^hTW!-< zIjcvpO3!@=mQmfpm^jjantxgGBQ>B_2Z zgSLfTXZrab5_I?n07j#R&vHu{`*YO+x-+J(hBJJk&Idn?YAum+N3indZ2#)IOW1OF`IAk9P$k*O*^^}xWUGO z5AF;{XU>Mv0E7-pG7|CaBa&?m-=mxZcNMEVc&dD3cZWB+ZYwE9@#?WL(@EObT@))9 zLRNkvqDjIBgs_C;pF6tBoM!8*>tGM{8-|37gWcycwkMMq-n^M7^75?~14^!;R8j{W zg`#6OegmiyJLAJy!s!ig1aZi1Q`DGn=!9_S6j_Dpt~N`^32-`RN-tkEtZi@qm5}Fh zz-n)~hJ)PC9$W1j4VYodbU?+0$V90f8?tV5MHe&!sLx3G8JYdOk5rf#^vdcB9JScd zx4jiRf=y5R+{bf@0O6)STtE`rv#1nYuH!P0 z>BX%|zq-*x`uny?J41E)Sv+#TW#&$$jqxS*AxIr0GTo5DYMPBh(&`S=tG0LFZ}43& ziurfpuCd^!x)(?MErcJfcrq>89zD)fS>8p_64;l3)bYn!(7?L5E?&C>1xm$jJ z<#x_HXXoo@I%+fYT7-@W-(z0GYVNA=DrxmMSzTne#>hOpYs2W9|EBMVct#;^WgCJT znv^}0-uBtV#1~D{T3eiqB-EX@0y*jQp(|VO%97jNT)v*(y=3tvn~`3_Y3D69MlL_< zNgt#Rxh08rSNR@ssWVvCJrQ(}ds{D}Qp98e7aTH50T3@8vIjqu>7F0S^BXK4UJ(84 zW#N}&A|3UyPqXKt1DIf z_>7p5%Rqlqo}!IDzWEN@%t!=y#D~1^B0X|OpU-S%Z17RKI@+<@Ctp+yi%X}0luXml z;A#;#oQI7`{(Np%?gxaeeQc~v0$`L!Nk8H)A~~|X4$h@bE6K3JZKEqnA6CJ|MEvuq zw-3iCTK;4QO6Z@|^5`C@jQV&ISJ^c&LOHjSEM5oh>a)-A=x!(~2dmlt_>s1%wvW#b z`1@5~Ep(llNE|8ENE~|=_{Knvc3nF(eBI~G8Y2G5Ms(ej+qo$b5T9-e#*RY9C63~+xJ7yWCvNe-tmlobfUS5=F&IGWCjhM#Sp`Hp z_4U5+)=B^aP#pD`@5xK)hCpCu$i_Mb^l*9354cjB8jnnaEO~&k13dk8qt~$IV|i}z zh@nipqsCs<%a-=cqs5c7gc8SIhzD}^CFaxPiQo%WC!$jxA=#5t{=Fd7M_v3+K?LGv zQlqRe-q+s9xV`hBg#6j}=b8c&%@a!1i1cTFrc?mFD0g^*O)HM2ex2p1%^XSqK%Jar z=q!mVxd1uGq}OU2>fPy&8E3X01hJuAI^Z)JAoHJ}9#4^-!lhpJyKJUCmP(|P*tGTh zJPG^@#86f-EP11?z2#MllEPQMAjAnwau!5!c9NH{<%*F;%(_F_MZX?p-~4vhCE>sG zD^<5wbxq6-A^T?tYzZt?rd-^zS;cwZbcpr6+dK3RIv@FJQmWivmQcOC#E7t4}PkJvq zyqCotiL}4>&BMj=%MW<#RjH>SF*ZSV&KcG}xfp!C=8~75$S>|S|1+EMGtcF7y%OK|!mh_FA?CPuY4k&8RwQy@Yhaz`Y)Az?^%@G=joiFVG04r7XUjd zc|%>LW#`WUad5*VY(mRx8d85GXlpU&>w!GF^)D_ZWcy4D-N|1S^?PLfC;f`@n%7%< zwww^grl5+t#XX)xF7cRWlgoCr%5u|2>5fy&xuho`arH8D>_@QlCJK@mpGtf~Kh+DO zpSR2sOD-tz(vf11+w6zf z^2@*mCgE3s%R=59D*$wrg&X#aTJm7GsFJ-s6$D0q6^7qx*8)in_(RTSblr}ui1X)n z_$^}Vz+&mOAnM-d8%( z+FL&5?W7ZYegsyBq7n`u{tY{jkNMr_vA$bhjTaO;`*hR`PfhkTVQqCaEVN?G%k*{C zXRdXGqb?#FBWz-ENHz|U-iuVn!8sAHs6sc>!$b1XV{Wd;(up{EqxqLI&> zG!)J+m^jBtGvG0&@8w@&TzFkLg_MYQ%P+WaOe;g=o8dwhO@bvvVc|{_l#URPh+sOW z$*kP|4K=7Yzk51a&wqSGsN~QdL<(nX%PvT&(uajrw=nDWRq=k&KYop^I%NONSu(>tdA z-WJ28Ds+ZHbRlBPCe0rF^zthA~bV znZs8RQ*CbR5arAbov1k8XLzc9$er_BBsDr{bR~iA{ZDPp`lCbLsIW~_u836-GEiWE zbUaT*h2{RNH{o7zuR>)wzg$rJ564aSlofc#G=74UeBXI1uaEHIxSw2GtHHj7Qo1)U zPrH$A(JAPD${@38{CfRivk=8FAJ^u5$wCdh*L#4D1O0^QjF@ppPq$ z4Hlp>e5=o4oX*WO#qc>c0`NSqGivMeu2+ppIMze8RZtm=oG(dw$*;KA)T7`NLLv(`#Yz&6E3#qeWY6;}B4Ao=zaP%O;G9RbiMP@prNHcAFkf87d8ZUfqj~V!KV9=jQ$z`gmY&&^MP6)-g=E_5OqbO4kvwa|a?kck4#} zzxzFo!Li?m$hhuX|`noU_`zdJ8J(F6MW4URx-#Xl{EQ zsWYoSgqw3iw-6#0WGJXPoy-_|rM4=HK4RPLICX*2p{b>r8!;*I+4p_PT4nPzrcFm^ zITX#pNzbj$;}*y!KYu#d7h7p2YjlunKF-Q=T@_on^x^ppSGZm2VYva^@YSuqY56Rg zGDdpWoTdg6+Vy=&Q_D5SeF(7<+A+tZYIW}zJx(;r%LL3e5#|PSmU~1SO`m+u=^moy z@5~?KPN0=Hd)=Pj)#s3=D0;U~55>F+#pa~>*k{aapW^8-dEO5GNm-kClW~15y*6jh z&56S05KK9Pq7x5e4~FRU2YBaxpkK*0I{$^5PvQl;iV^55=c?^Tq|FiHvxtx$S9N^E zMmDFF#MO(VF^rnoWS(zjJ>yTk%iS1!$V~c6&|T>(VL#oTCuHu+qXfL}Q`N*sI>uz02k z%3lFtQf|(XRSA6sqrSp0%{hKW>7=sIZR~Dh9~#3n{HF<66+=>MlyA?6d#K~{A~N59 z>L?O1H0@~!b{tH=FZriQb1x;iNZ}KP=~!!3%uMc+&Hk6JR3EWi2h&n>_K;IqIh16_ zTKZ4Z5(0f2Gdh=-*>@!gui`)KjbU#3r`Ubq9@jIQn8%t5=q^&6asAv;3GsI2l=sd_ z=_8a<6pB6J@*y_w_sKwBL@rk=M|wnh!Rb_KqpG=6gh2Kp&|T6xiUz3p?}}zfjiS#A z{mO>89?kMIr|eDta?fPOb@Wu!JeOHQ!~8>SZiGLF*Btl$oKDV|7zH`ONuPk~$x3SU z2#S^BE9d3aP_$kQ48rFAG}wZ1(tkooDFwX%3T_65bPl>68It4$16||JH zuY|_;Cz$Y0y{o?KbX@V_&W(qHL>a;hW=^x!b*2Xx z6fc5O^#%;nUdr^9)RafP!}O)rr1lS{Sx!bt1&Mh{pz6H7JV>B_zA8GiP8Mr2(q_q< zOc_Nu9bj=gpqr-;=4P)kxBZ{PQB9UiJvWJ9KNeIG>WZgx8R$i|~Log2TrKfMd-e~MDF zh=+gjE8-iVnQSkq#DD~$h?;#AYh>AT_~r{(yb6l79Hhj%(x)==x=Ot<6Z!g?)Q_H$l`+KJro_FZT|EyK#_H!TOzDx<3@?# zfer-=i^4vVyS5zjB_Kf)BYpW7%4;?J?3{Q(n&BrNE#)Ih1&GasxMrAz69>g5z`#HZ zwRe_*18C)N3983&oLnOEcoX|=Y96`UZN85Zl-EXBy?dpCnL(4{7%l5m4aBnz(OmYS zrfUJ_-cH2-JF0ncBUM-j^9Fx=t)zjZRS*g1_=sd|iQi;C0`F0gVP`UvwG5;aiQIL*z z3?~+T)`v<@##=SJ9$qGLYW>V;mr(!2OXRzax@id{f}?*r-hGOkTuPqH^Y@dhvV zQdO)`a<^vG%yFc@uAQ1$YIb9q?wH>Dw;iDR;nKjOcgCcXC5h0pOMdTHV;xxo=Mm)) zeCQM3%ko^uNX+k)Q~A+9J{Wyupd(S>gxdM85~^ZQlqb5wJ-#x+M>kL$itl6@Ttm~E=@it=4 zPpF4TyFxZC`^ZYR--+0kgRR^{DddSnbFEq;+MGHM1?HUWh@4t$cQZEl8|mDiPIn@k zz};6BhfJ^NBf4;YtURxB<}Nj55$4_wAcC>*2A&$xhX9IE^4X{IKe2FPK)|mdtUE41 zgHrFIVie|Uwm=UVlz0;{3{##V{IddD2}JK`>9UC_7OoLe-^IGp!~Yd*yvh5qXtXVX zURw?Ut+Ta+D<6u5!G4;ZfaL(CHXvYq$g6c2oZdVWE+E+;t34E= zh6sjEg{>9kf72Xa@S8o!(IRb%Lh0U>x=i=1;18iTjvH4pUP&Ok%uk};AXS0BT<~Xw z!Dzv%Qxa?+mQZI8Wie1l&po@2j-%)kf*uaEJRQK$t_Uie#NY|!0>O0G4;8kN4>hr6n0pXa__WbI^+3KQ#S=|{b)|O2n z^XWX<0@a_B7!xdCZOc<5Q{-RCJLivR z%@+e!3mTMBwScZ9kdFx_wI5R+t)4XfLu*_;KiiH^Z||gMmxt?)i^$?Y9qdR@*Jh7{ z{N?z?pm3jRq1+-DU01B)FQGYA%UoM_*Eo&wIO*EfV30@^X5a zo`VN2hd)wQHB@~1KV)%PwNW)RuH3X;uuL(qS$aDG&n+pj)81?$m>OX`a&m1BOu$$~ z@n=iOfw>V}ou%7^Ccp)?mCzOL`9X(2bZ@<9mwFBy-0kRqO>JIyK){7$U~6BnnjJZE zC}X%-XUNu*Pt=h-R8N^_59I^@hw6tz#i`&UG2ZkKP+r@%mrY(5;uRBi@VNo*UmLpR zdK(Wf^(;9P@G$JP3^sBKQyIjHxYoc`=XXLO_m!zi?{DA(9I$pl)?{zEpH%lu%6TMX)0dwD5jZ?ld@Nkz6N8eQ zMQoz36dCPogqwya`9+v=D+9_=0oySw+GIJ|IpyN`(g>rx&ZxrJzz};4uN+t(lOoVp zW5oueV}t&E3XZx1lu^c=vevS|c5Wv83+sG(2vF3Pvq_GPgwBO2{#6i^aH>6KnGdp-*+u%xSf7rQ?59 zZ&&2!##eCe9!6pO3Z8&FwBz4MaOz5+>rxdc)@{1 zXpfxyJ_z;o8)>do863m8x}7m#dA5$>ygA?cWP=*_no1{{@Ye)5p?|OOs{&#pebL<9 zDTC{h4m%9KVzb{4j?q@|xpc%AaRYUd9lhSdQ`Zopr%!%Y#<%e<*2%rC)Xe*mVs8Z` znrCaZ*7@MyqIw*FyXIx|7|s*)sBoj)RCSu&dr;b5u&d)Ha7L3%pHqoHc)z@pe9EiUfRohmMxX4*Xlj=0B4U!4?p~%>wpE>zi%8ow<1cJ- zQDo>_g@~F8n@_8n9PSL&;Zub9V~(-Gp}hyADYiq)(gr(VgY7|Y&gs%|bX;&SgBJk>b>qSAcW2@$qe$S3C4ujRN~%s@5Nd#%yf70sXL&#F zr03y%1l#8Z>LNO&Yglx~th?i?=J7~@-kqM4qi5oE45ur8dA|sf(PWx#REt0>c%EqjSb+f~tTh7N<;DesRq!zMX{fwadMh z(RRC5>*TqxdedasGLByqHAJb;Q8SH^l{*h+{Fp!E24iFySiLv=nLa{!-2}oVFk%Sw zE!uL4`}o3(nJS%*g@HKl5&Y5&Red8JoMp`h{wl`7sE$XwuKd%<4g!8Rf8xCro?V0K z6J$v-wSQ}XVfOyh>1Y_Ofp;-r zUOWFOFP0MdyJ?WzS?dJwPSAf8c&4bNUcOijT@h?80^J#qB{)YIlmZ4NjjtC~Fia8o z#g@15n2U`FyX0%2J?NZ@?d;!EdNI)S21Kwb`!O zK*1~iLw3HDNT1-`B+xe!@B$MTO!^y`)W4-3O2=>f9mD)Rl&8uc11xPY>bT$E(lSuG z>fchug*7pMXX6T#f!IH@c?nzoQ~D5;F5s7@jiPjubE8ReWgI65`1*1_ixN%)jg#m* zzRjo0Hb+vdNU&2B!SB8cqZjA;3?5H}p9pq~0Z5vjrr9zND&FzNq=fNleNzc>>aFqc z^-eyy)k)s;O5xO*MTfnCl&lbRu$_PhzD?Gt+y?=Q3;+I1pkD%DUOueW^z;EGCY7C2!*6~S(pZp`G*F03L{#x({5fPN%#lSCd0;;%#7{?9m;X~hJ zU&cNPD*5@Z^oohsAI{VHPlP`R9Trm_7Uh<&?9?zZW z=YIY%xh?SE-c6i~{|;Y|(TsYSLH$k3(7V=B5K^5EswwjMp9Y~_B3GV2fja|Hw1S>YGd8X0o2 z1xnwEH%w$^!ofMHI+(w@X{jjo__Tj2DnoAz^C}VqZ&kk#_+`C7d{G3t+mbIDp6Yv? z7Lgex^4-eWjnK^d)5GE#Cy;D2{x}1PaHcXLChHe8uxJrdFhBsF0|^0BVh`owNSLNJ!y*G3?2^M4n9vZnDNT&ul>ElRjz%Y zc~Nlc{^KJL#%M(X-c(^UF*JN!n^Shi8PAoyfo0r+F2kMY7ASNT1=niyn{RXuGaUJF zpq;ttfXxTgKdbu=o^oy_`^q_nOOE9i(}?xMHN%ES(CV$*Ln02Y*hDA{CEbg=GIc{R zQvOhJ_&DwyTZH7P@-%{!ar%?qMSAJm%db{jlPICxHIRlt-DUMrR9UnId|}y-0RO_@ zb;7hlq*oKY6dR5PQ((8m!PekkJYUZPlYv_f9ZtH)`nSgUz%PH@4K|I?9gRyb|7iq_ zi9%s9cW?Z#S}l|;poW?TPjz-=D2m(swMa;IzEsq4IS~T=JfF(m^l_Rv^cm&#RIt#o zFxPZ2QBTe+$>F2D;!)nBtpcrK(*RxR7f*n#1%3KnLpEI-lhXXB{dDAHm$2AwZ+v8| z)hrMGY>1gsR8Qvi?=BdoDt`;a!IsC1E+_YauLJ#YC(PQ<4V0J*;FVfpMb7k5%MrD| zgV#fms2>6&%GVp&bmA@~Wh3|{%F8Y{4cbxo-YKp`^q)Cic1D&pJ#~m<2xI>B=~#FB z@A~T@Dx0<3DfAcg;~BF);=dKgB)swO7{ba*f2TP03zOoOMMZfXOy)0L)HS_{mpy%p&?;AB4u4%N2fvu~}ORq@+XZWo9>kCT7Yr%EktW|JgKNoCf%yw7r zbMSQ+`Lbh8vn^i23G==>-_uB9#%B;e^J9?TZSokdw&mz$O)FOdZP7yObDlfJE9V@8 z@h#6<@qs%r_kb|`Az}8`JD$`(+`00KgSyj#>$P=0Z}x=YBiMhYI-%^2nbYsBK- zoIebs<9^B)2A=Y=t_7;|y?(=304qE*9K?&Lv4oa0=4SC0!;H^KE*8oASp}I{uor|& zsO+2bEk^ZG3=E_nO?qW}AiBbNqu{iEFz;z=fT|?Ljt1mE)&VaQ-9YL#%(*xTBl!(? zQ7YSZq>KZHvDfULnD5DYkTQJ6eZxW)E|U>0^(c1Ep=q9L0K|k&IxqG$ZMGjfz(|$- ze79_f>e}`O;DVy>%V7uub7j_BYS$X&IDlhP*BH0=&d$O0w-5*-nOzB04D)@L!nB8F zs}_&Jcs$EtQsosIK_#~ zYD-e))!}vK+4>HpX-q4Nnm*+Rbm}Yt@vSe626I1mOKMf8RLX0uoBwsWH{HlQNv*nI zMaP5K!9(bJ4Iyw`&DQVkc6#gE)R!yq^qbmg=SUiNey|59ukrhzwXZd!xAQiWmFK50 zy0$)De)0H~hd}IweE)ctE1@`T@B&G9pL6Ywec5a2>X)aTd=jAz#mq608V74X`&AAx z!Lc~Y2#K{P3MIt|LO@;4x`&^P(W*iYrdC|35!6sy`xKS&x4{RLN@^ZH^{PTAcRg_T z&2^%Nv2gOEpoD<$adsA=0W4sL*Q?#xA;dI^K^P(Mggxu5 zPQKgoi-6CneGAi%%~y!SSe#R+hG=W%XVS3nguP#$2Uta+X{q_2+R6W~z3+}|^8Wq} z28aWQ7O5zZpjNRiu*wp`(5iJ}Tem2|g(4$@G7?A#C};(#U#h4~Ma5Pb4g_TdQ4omURe#buEf}~wiyzjbdvS-!bqyvn z3O^NPC;B;=8 zU?03pz<^sK-NaJ$Cmhv+VoA}P6!<>Tt~>0^ZW=apWIezInab6H>Gp$t`j?!s%Vv!I zliRoUcQ}wR`9U%vtT1?+YBcqFisvCBXlDrW8{zG50#-swg7ZToj0h1u1XoG!CR4f0 zh&ntMk>3i!_i5(3kG|UGopYPGBN89PKCG50=9h%np_~FcJO(^AsiJ-<9I90VAx<}mBx^~LpDhd4*8KP&>=uy$8t`-lIN-S$FBEyIe zG#mT$fQa6y4RDStG<|o`yExffTadS|J@%5l_3)yfJ#93OxgC+o+Jv~F7t*;cLym%T z>iv-5*1Pjgq`2 zoPI#QmT&qKqNt~Zb|Sm=nh(bw+gl?Y|A~7NHutZ6>@-c_%t+70wIm8X%~pTth(5zC z@Rm*Isn&JIQy*+Y6oSKyjH|V)#x~_WkUn|MaXNh=-yGtWvbbB0ZGXS^6GFoxZPh>S z$$mO5U`eFGz0qUAL4P4ykkYGn0>9?hpPPh2*3)e>cgjzVO01PWUdTEuTs-vwauwEb zn7Nu^_F;2=y6L#DUL-~z*K+>60=urG~wssG54*dEZ zvb<(2EtW9VYWweS$)@3eZXp$nlmptXW~RIID$*m}v$dl$IK5?>khP3Tva?6zxe-EJ zCVTJr5GljK(G6t9&(Cl+J{F{zZP?LKqlVRb8cUEqTOZ?I**x!MD!nO4@sITWLM68e zFlvZwtweSWednp|rap#11(8KXTd|{hGm@l40%O#K0uwAU8~<8p*Pxwy6RZ?@)Xo`y zJ}#w!gFAc-H>C$r^e?2}Nm-7Utd@Zh0hlDxC$*3;wJB~VJ_j7;NZAT=z42~&i`L72 zK{{Iz;L^(8r_1mwkVrIrP>U?r3ICe611w(D%4~gsdli4mH*6m_PGK@1XvSvi&Cu2| zZfMCbXhjXyp?BfTwjO$Idre+f^HpNwTgig8=p3T_)!EK%> zPR(IXsSx;}PDzu{u30LzNh>~(Mjo8gDNyo8sEMrAxdsYLTj)Xh{fu8hxn$aO)Yk5A z!p7KMYf&=hK{pdP_I(ijPYnnuM&8vA_r$iKs z5}uF^nZh27?Cpv!~|Cfr0ju%vC zpC}XyPE4>o@8P~hJN%x+Z%MkYneIy?uk{+L-f+U4IPZ&rM;01n-O|nMSO0KY)g;Q6WiSA;QPj!VI0k{vGjobC#l}gx#nrVDmgN_ z^`c-JiINv6@gnqw&1d*{zvTMy<|w|eTYh)rqFY9K9}O_q z3@RLhxe^mf`p!=Vb^S?|SMHUuKF06P+CS>-bD&VQc3Jj*p!qr@G=l48@dJd0M%WPPoEm6#caQLq0A;By#xNbbU>1>&u zt-y{3i#G5vazqjFMMBmvmQMS=AcjO4ZoEy3s-$#r@&-SJfhu=o!uN$72gil1uIRke zUE^KRIh!RO zQeBcvF`F|f(qCxgC+nTe=Z<*NZ;DutdCZDMeOIceWEb>%0XWOEc%;#0N+vDQzg%*a z&|Q2kVd$Vmn!Cl)+b=8+iWX;Uue_`9Fnubq)mF)X0@Y&2pW%ug5BF^xcXlIU+bMyb zw%i1Z7ejx0-3weu>l}cE3fsqa;sc&WwOP*5V!v$@I!*NZ1%k@P)u$;zV>Ax4R16<* z8_C4h#L|5r_veuS#?uw;XLsCXN5JAd^XcG`qj276H?y<(^>%!C@~Xql*kn$a=BE2)W=U-+NT7i10*Z&-Joyf~MB+wIBREg!?n|`ZTcgNOb*bn*if|POG;!TE*L#*87ak_eYQ%Oi;Y37T`&}K#m_*7%( z2N!-*+)wXg#-x3!+n%lMfyP+?9OftV60&IYS0^6WSl42gxvzvH>xkk^hv3l&sF(Ni z_9|@QnP8r9Duc_+Fq;D_L-Fg~>9|{4wKAgTX3@?S7RWr%hYCH|^;J0IR^;d)LEHx< z)(y#L_;A`hf05Y#(YQEG+o;hITogGuV@n^CeNQ@CB`|7B7loCRC@;9I%tAq?o@$@x z)~vsD;Lj1Da1v;su4~1hB#eDKZk9zXZd9@d@7UR!@1g&(bY2U+d`{-K?_KXzV^5<; z>1Gmz@Gk6NOT928RMleKO~0!NQaTofKDd!R6l-kYND0(A_O}s$oIAG?Vut}O+*|&^ zZ2!*&9zNBYYJpY+ym=n+z7wgAPo>)_&xuMF3m9_^R*vdiS;+I}67P`p2aF>V9zAM2 zLKz)COse6#PQWoS8HTVVQS?OyC-eJ(g!g>$*chK}Y1AiT{Y!gRoKr3T6W3-kFmkO9 zdwO(0fL*rAb}}9Uv7ci@Of(Dvk)lu4-Apxw^lO>~c9m=LT5!tYmdg%LW1MmpDD+ZD zC(RVBfsY%#mISO{Vc_YC7hsGdP=p4(Ip2`dqbf?;;^QeKIHLa+1bQ(UGV0+`$<-A+ zvpL{h$PaO_LL}lt(!>lj90ey;Xqno>ZlNMPl`XJ)i}T&2mkO_ns*2Jxyr$nHg{eKja=&D&p_{TAR>+G>Mh*pnvH)1 z7`EI>+KfLRdj%k;-t6LXGL7q(Zjl19#9&(j?mZ-X zreA4AQK&BowLSy>mgEP00@hLhN#$MS;Cxou&-{oT9{zQor?<)?#JHU9Sx(cPpDDd{ z>YS-Tw-9q1Fhs53pla=pj_JT?osF2~%W|w3pChkAX3pP!J{@qNbfPjR5SYqj%{Y$A zZ*r%kHQu%=ggi<}ejxp`FNxg?F5GAw-SzgJm2Rr&v52C-Kap9Lv>9!szwC$MA z@Q^zsdq#5V3f9+&Pb*xOU+@9P@PH5%5%uH))K-E)JVL$9^R73z9DjnalweT%k2EtBj-mO{GN&C&Y@e$ ztnDf+-UJ*;kO|NxbKlI&JOe32n0%zy|NQ?s%!HeSASc9^YCRGTd0cKQF^Dg@qA1Iq z#_F7cc;W(9;WEZ$#!|@GlX_ypZ$p~zW1kb?U10F`tWbZky=%~2+7$kG3x13xz$D_l z05w;WavPX`GT-c=hIf;Y6-K}SK@I8P{Tl(R zXBqCD%&lKSqEr_rG~R0a)HV%FSJ@&9EruRTeh=&etq3wkrl-YjRwq&7T~B(!3dCiy z6>Y&cpFIGK!1f;z$vG!B-Nn6}xJkgM%NpIo^`#6%=1yZW<=y_2xgCGjYz_u1nz#GCevF4jE&qg3P1O7 zh*g|}t2?kt?hr2Ub85qpXJlO6EEIqi1`7g)Q~Os<3U3cH%Kc^5v#B zI%3`0)Vp7|eytb7}7Rn|?V9&Z>TItHvjyz{u3fcf(Us3az>dSXbsLpPAPD(G|!u%-T;rH8oiQ=d4)-oYmL?)Hc98DVen&}jw zT!uG>cVbyOa%l|JiCnJLs(9KX3PElLmeZd7bNP!E`r_D>u)9tzXNG)rw>@hKViQY@ zqYMvOLNXCLdto5qLW&G{nvA5hU{60%_d`_h9`3}l(WgZRg3J-Xl8R~HB$qn|h~=^- zHCVT5|CETMK`ZEdRCjYF-y0utVoopU|NlZp=CTdsN8YvT5vQNJr>YjPMsOsO*2u z05!J?yN@3WJ^gSz&K}|sQrdJH&gMz6p2#D`)>MJBK= zZ-?%dG$>BU8f;^s#_mT0_38t%Rk+3xbX&QR(?&W<@N+B5lgcOd9$;4}PVA+gmBgFu z$Aky#X6{73uavKnSTl3}W_*qFWtHQy#n;Ru@vq**QWJk~RaM!I{50LO;sxaOEahxR zft(ubrK8Z(U2}W8?J{9zyvp|OgDA&?H>xV8NVBg5@!K*L($34%rnn+^%ooq{#)Z%f z-jN>}p9nv-((LfNs(V$IBJb>`8U_Y@z+M0>2E9uy8HRP(3;|UU--#gnL~s(=0dq(m z+gZV53IO5+i&6pL0A)F{keaBALO0j*OuK-CK{Xt|z}Hp02DwKrAu4j);w#~&g!}c_ z+HMs&?s9>Y9wN=qu%rf2<=?~1)Otl&j~YbrS#lQzcp5`4OOra}R)#crOyT`s=zmYs zy&#l!^B-Bw$}hel{Z0o)GK9zEmXp%MB_w4}7j#6<#g?UQAsioB+Lqj?riKu@g?6Tj z5qsjOh7sD}w{;NGG6QY%<)yjKBxGsLyU>ps zoB~1?SJUt4_VJ^{;Vx2onB|N-)OoI=B~A-|cup9ZLa)PSH-r{UGLh-{0JVaSKh(k= zCRn#&wXB$0+NUZp? zI9PI4^r`Ui+>fIr!rzKAMA5$*^fK2e#;&2 zY|pK$PdyiKp6~z#8Ng&2x5U0IEtZtpwI)ccdYKh!`PU`$I%1aTYvM_c1ghi`0m7Mb zO@-H^OJ^H6IN^D5P7}F(%(Mx@%hGVx?foxLFVTDsYGHGDfpXDfA3mayG8xODa3yd(uvn z;rUxHvvemVzQeQMb>pBOiE?g766dSzJV6v!rv=->zsgt}>wud<;&&=!x{HDjh<74) zGfx;Zld0`>{3;JhB{m!VI-m2HqLT&e&)>bN)>NHA1B^TaRd4r5^H`A`W36u`MG{nc zl+n%18$XkVYegZxkD`D#$%E4zQ#aQT_E*M7?8A@!ppc9!yLYaskw#YRrIWEbSzK}= zjy?w!hfsK>s~TH&a{MIzJ$`4_ur)Ptl23jLAKs;JUGDI!pM*1Z{`}sp&E3pimmC1* zJg51fOhk7pTNBc(55uKhaZ#&h*|cKEKNrPm&+cJDuBDvT(9~yJ8PH}77|Y73PxaVd z%7btQ)OZ!3Z;p5Qw+XsCj`1^Ib(*{p&Hvjw!?+WW9N)$dXiFkdJT9@9YlU`IDha5Y z(CyUC9Jqr^)>$)$#5F!RdnKu|S9u2UX@1lId-L$lFgE31ubP0qR!JEd$hWK>@W1Vk z*B98Sq4F9f+z4m449|S+yoPu^hH%jYNNrbk1;D>ECX0k`1xuLFTOw6A9v0q@Ve%)Nc+h>!bg zHXviq?HZP$J8}xIePZWJye%u45?-mg;cr}cKw7G#PoM2`oXUJcltv&M(l!Uq<)n&E`tDE@?`UyZKg$3%m z%0d*3s1+y9tHi!R=jTo{4A=fP8tp}Cf;BOMAmss+9x0!e5Kw3+>FuymY-rCRDoZ8o znqq{1cRjYI0%36<`bjCDx&2jGEek0wfW%6aF0%&^_b&u>Hh0+myUbkpT-45 zg&g*3{J*o6avoM|I?iYCx2%7<{~ruV={gTkP(^vV=3HQ&^`XfgKXHy7li-vvo|K+E=M9?s^zQ~ZC=4=~ei_9A0T*NV+Vxe02z?FCOnk7_S`9FD zV5+2V^$=}K%n-@|gPfJ@YV~9Xeu7ip+yJN8v$`(Q!z#6}Cz&0^bN!1ABpi8cCj~05 zY#OU@kl1>DVz}o`42DdU5l$xb4jS<^>}^-NEnJUUKRQj=gsnqxCg=RH#}=6Wh79eUj3nIR%pL0|EbL7L1zkT-4X-Fps_88W{54~u zFk5VXQdfZ9h3OHK#*dFeYMO4_G%bkL_tdvEVQZ zKQ~qcRwm>*@jqLmDwn$zFYu)$l7fN#9JNxswz9G_*iP}$Eq#Vd-PCz$krBqi^EdII zxX=p~qqDl1`ikeS4y5#BKiQ=5MJnoDdgJHtu^t5Xl^0Qv8_cYs3VpHoFQMHuMVp?z zUZZGYnU^mKc`amdfOFY)B=Y!I*noUkTb%#2{P#}ueQ6EAiVKWoigc#ihD z?Q?M$`>YiM;zR>U6N1@cKrQ2}!quB;pbBBeVGjC@3GaDs?0PuNED@^Sx)dz>W_@(< zja04=l-aoR0g|?_L=nrP$SvQ1W3SqH6qDac&b7nxT@LH?@ELQunT|7eL4J=ttLdxIgQr zkwsvf$Zo_t=F&gFgjlUCT*dXaoc0`Grrb@jk*V=XReHnYePvQT<|D~!U--s zUbGJXBl=|mUn}n*m>E#%=v+X7xP2guY8b2#3sl0%qmk+Dlw7D2(;%?(E@w;W)J(!f z)Pjd1LTBp=N&+ua+o@r%h%~a4Yj{L)f<52@PjgrlbOZhZ+M@@!Nlo}nIJpV_mQMRd zT61IEWB(kb9=#w(4{9KlOU@e$Sk3`C>>2CO?miFV1H5hS(0xXm2sf<7hw;y>49twP ztFa$Ysna3dD+`yZKJgs)F^mv%deNB0ACJ)>^0j7cTWkXV4FQZCX35fzPx1P3X%;9k zc?*x(mrXe7N%VN+CJCpzl zHS-md*yRO5vI#q@*KLlCf}3FmQ{b)J*!wP9J?L;cprO@z$70`Of`w+S(?VYceJ7*$Lzv#Om?75jq*r4a7kI&kti%cZ zt`6tP%AIH7Jm`1(?jQ9r?`KM?unE;8mL?8=Spu>x~qy39YKoa{7I%nP+*Y z-S+y?YsCNhVmBLY&5s*q*BP!2SlfRqa-uNWc>#G_(9vvSfpdW1`1Y_9_X^)#dFnlV z`?nr6@(;UBtj`T5mM#u{m`6s<4A;v9zgNTTVH0->X+azDZkoAh$bG|moTPNROZNQV zf>ag9*wPm`vonDuM}6+006{5@%pj%+rBpfJ?O9M3ho;xvIf@VD4Sw!XKJm3L0j z7i7zGDZd=Xb7N4lM=1fadGZ6RhmX9VWu=jO% zE`NO%p<#8lf(E-n@&IzqcL2#3iE?~9#9C>t8$c^M;?;+`+kMar5q0g&ns<Th`E!xP_?PBa@LAa=^2KQAdH?9o7%0wlX< z-W|zx4xP7W7!6U>SqU})WlF7gk}}0xF|v^MzJywPxaMpvKF<^L(S3NJN3Y9&)^2 z4j7H9shmR~v(YP2aEBb64=D;V^m@Rek!#m(f`!6EQkam+K2!CfpLGBkE~2;u4=g@8 zmhTq}Y*P7?xZ=%|5B#MMwjfR7kR}N6ul4Uwl$ubbP1Y)!Y#v10M-*@FB4X+gQft4} zj&iSdcZP!@LTSw9Sy)yueaA`6sj{sTrm{cp*2>}ZPdktB5q%Ae(!AQYLj(EpdM*CM z1?eD5Z@Ll%L`Zpzj%RU-u?~{&WPz4E_Fdp$A{er#^$x&qS0E3H*qKYq*c}k0;94=Hq!1iktdx)`>b5U#O280kc6}O zjKOolHgCTcKM~+;d4y>?i9a9bx63nF5k0-&>yrJ=R|{>`8u=+kgW#Qm2?}kG zl|ct^Tgs0;aT%21aNxL`BrZTkya((`-KDGSCjo1Cp@Jh+gqP<5e~-2EH%;|jNdH@< zLB)8miV^Vx5jAFpA3UBdf82J9XTy4m@(HIy^BgHug<#E9*z-@ZlbCh-3t-GEE|?1> zxDMj$d*#jvn4%U|vwuMY>fC}0UW!nJ^W5sZS~U|BR$8Y- z935O+bbNHP${O!^g}s&uMlXhi;_K)XDfIT!uO~*H+0Naaul`;l7VaNgb7Ck=lpK~? z7E;K6EBR$++3Foez5OEAfOQb@%Ah~fZ12hstDK(ST&KIYDKCDoRF^@@Lt!;2F*mXC zeZ^IYMK3dN*e_7u_NtTn9t+L4#RD$M!tKTm){p!}mXaU18r~{pRp!adR{AQ?Xi*mIY#bumXv=sqoX3PZCbr-$vLPdJ>L=Hs^Mf0- zw&BOn>}FmDZbu03*zb8Cuwm?!-DWe^(B{97cNUF3eRgBHRo?3oW1nQ47*(5(P_5Nm zn&rwmJMNCx_gF!hTUW8Q#c#JSm7K?hB5@~T({5OYhM{T|H^h3=QIu|FGrXQe8QfiV z@aW4cCDdZ#A=@GwtOJT;(s)ev782i-LcH%wYR0xez1#gpcvLu6{Y)QTn}}7WIlYiY zvOHP<%UMo)h|_vXn5kNU${_zXt|&v`)U}EF2v>9*SZ;@BPNE^am$;YrNR$Jgy*#}| zZ15_n_djz6rB&L>=0{F;@h5JF!@xfLvriTxm5^?t{_<{Is*A1KoK96mRO70c1CVlvFTB1RFw20*k#dL>Q zDTCVdCWu&3CK7^CGHeC}j`|)C9l!@jjyZN0J)Bo8679NJeVoz5%nSSukIt3`$hT_V zIh#8oRZMkLR6Qlbg;fDXfO?omtFcjF&Qzcx93W9fzZMTs$+}+sP|}&to8>RLP2Z1y zR=mKBL^*j_RjF4Vv%@ccP?t7Jc{Qx24ug(Dg|_%pw{TD~`4QtfF^bULrDqx%ZSi7w zGEKh{szs+p3R#>w|7Ur*G&}P^E|iID<1q`f-f^Ck-KoAhu?PR&XIakbWdoC~vY=4c zAA!Cu6HMpN#L(uB+Y>FT^h!3dj~bb~7#|ty%bE6xV(m!sWK3h8IdWv5Nbs8Xr)Jn3 z^I;(|3F)}BAD)d@#hyI>fS`@-zdFh6Y#f0$u&J&5Khsa{+VyOLwH>{|O2=`jg2)xthq~|;CT$55 zT{>-nI#DjSmN!|K#6_=8Jxho3qg`I@QHn)P=c$PQ3BLco;41$&*zo_K`Trsg!2fQ; z?-Z%hmlu8F!M-(>j-*SDjSCeP(6w6Zq58P|9eXN$OR4Rr-J^@TUwU+mfR80-QM`lF z3yJX>4dYb<*$Dzx*UR@axv1sxE`iwX(K3Fgy1VUMy?KK++G`v3w1@GH?^vA6Q0fgm zXZFJ^%%P$JFv~yOKXh$c@Hl#rHIn$1E#vIdd`MJiUi6ly&OumI4l#*U(p{W`eo49*M=UKiWWDTnd)jwsOz0^?1SkX(ALu zcDJyttSHA+a=E^4xKZbeCq18+ilU}in7NzWFB)h9NS#XFi!S6xynf7#Y1_Kgpw>uq z!eQg4ZS%t)@+v|kpVgj4o7Z5iCXdTz204~!F`n5HZhQC;+3Ol}GyeU`A1N8z>WTMh z@b>B|<+q`rSVLR9t=I?e=)N)Q1NQ0h9p2LdN5{&(ghOqth6Ktc#T;s`qo$DuJu5SW z>^&UZOX%K?=Y}f8_**yA<0CdIPIZ(MHsp_gmaYGO#}d99KAou8E7$5lyhhJ_)E3`x1rlqM+Om>{nhK)L2Ot8@RB;EIa4t3`qF6d##p%XX*iBH4R zy5MgPjGd1ZusHU-TSZn4c*Vz+;f@cu(*4wV_%Qx`suN5w9p}Myu|uoG=|E9hZG|zz zYe|A_cVNE1q9i!7!h&h-XL3ZBoSjsC&=~Lr5i7IaJm(tNEZxZoV`;R+7y+wNrEuBr zYEVK}eih%LCFVC_yQXxfUU&c2V58Valec70*akAr{iX{25F+4DUA&k${h&WzT~b)P zF-Y>wlrHUArls*4zlv%?*Z-{VLE7ux$~l$iMX1g58&|~w-NXNb-1z?&?|vu^a#pzj zt1=*y0TGe)cqn}@kFWe)J{^!3E00~mhfiijDS<`J4B#=-*8GU1q~1%Y0Ss(1P4X+m zCse?#k=N#+2A%XFCK@8}*hrllP6_T3U_L;S1A^^BW!VO@H0?w|+Y~3=BD7oP5)^Hl zu~0-CPJJ|k0&3q$qm=TTUWRAiwwZiYv_!`qj`aC^0Y*+Q{c7HYhaaGVyquFdomdAA z(kr0CyBuv>CJ2Ih)pZcnkP}&pvb~L_`fYQe2Hlb2q^`imo~dem*PLVr+*D}}_PZwO z8+JyxC0p@h`GK?-?z&Thmt@Vim>tR*OM2ogZjXHXV)@HOSxe8WWCYy0HcwzzbA52w z+dgq>mhgG=xBQm^yAZ;~kAs1{WmCyd*k?klNtKDXJ7xxzE~BP}ryIULvyUg7ti=AD zy`%f-_?-?Nu787}1Aa|6^MU&&K_k7EKPIwv-I<7!_FRRcJ+ znE1GV7SFkEm7q(CM_xU0i7lokLd4oYLYZnJhN_*;!qA33P@~N1WFIJxXfIStaroy^*oK$(F@65NV zm^nLone#|9UFp zT!0aGI@V!#Z*1f1sA9&Bk#;8GmO?YESK=o8*{M^4Y(LvwB`lexiphV5@0=(TpZ-X+ s4oW^^34fgkgCSus-6|NU=78znzHrXS+XzA@2L9W;VaJcD>&U_X3G6XS`~Uy| diff --git a/tutorial/create_tutorial_from_source.sh b/tutorial/create_tutorial_from_source.sh index e2188d0a1..ade187e68 100755 --- a/tutorial/create_tutorial_from_source.sh +++ b/tutorial/create_tutorial_from_source.sh @@ -56,72 +56,72 @@ sed -i 's/@fig:inbound_rules/36/g' Tutorial.md sed -i 's/@fig:entities_hierarchy/37/g' Tutorial.md # These get automatically recomputed with the update script: do not edit! -sed -i 's/@hotmoka_version/1.6.0/g' Tutorial.md -sed -i 's/@takamakaCode/776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe/g' Tutorial.md -sed -i 's/@manifest/323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#0/g' Tutorial.md -sed -i 's/@gamete/04355968e61a05f6eb9c2c2c0270cc88cb821b80876d9db351ec83f21391a80b#0/g' Tutorial.md -sed -i 's/@gasStation/323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#14/g' Tutorial.md -sed -i 's/@validators/323eda20a41176da86f0967a86aae5154e97aae163cdbc28f8e50b36bf11f48f#1/g' Tutorial.md +sed -i 's/@hotmoka_version/1.7.0/g' Tutorial.md +sed -i 's/@takamakaCode/ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42/g' Tutorial.md +sed -i 's/@manifest/f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#0/g' Tutorial.md +sed -i 's/@gamete/25b310a0ce87dcd6a019e5a081f38ddc9a8812dff7144273f02d06d3824752c8#0/g' Tutorial.md +sed -i 's/@gasStation/f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#14/g' Tutorial.md +sed -i 's/@validators/f12254cd1abcf6999881a73a45075196d47828baf630bec24efbeb50150a52be#1/g' Tutorial.md sed -i 's/@maxFaucet/10000000000000/g' Tutorial.md sed -i 's/@chainid/marabunta/g' Tutorial.md sed -i 's/@chainid/marabunta/g' state1_copy.fig sed -i 's/@chainid/marabunta/g' state2_copy.fig sed -i 's/@chainid/marabunta/g' state3_copy.fig -sed -i 's/@account1/595548f802fb6c2e9eb1f3ad4f8b3c93fe59d0144df2f59e627fb7267ef1bae0#0/g' Tutorial.md -sed -i 's/@short_account1/595548f802f...#0/g' state2_copy.fig -sed -i 's/@short_account1/595548f802f...#0/g' state3_copy.fig -sed -i 's/@36words_of_account1/ 1: awkward\n 2: train\n 3: mask\n 4: inform\n 5: ridge\n 6: smoke\n 7: scissors\n 8: obvious\n 9: dumb\n10: angle\n11: segment\n12: believe\n13: next\n14: piece\n15: theme\n16: garage\n17: history\n18: insane\n19: property\n20: trap\n21: stay\n22: sheriff\n23: venture\n24: lemon\n25: flush\n26: level\n27: beach\n28: tourist\n29: fly\n30: couple\n31: yard\n32: tooth\n33: leave\n34: miss\n35: retreat\n36: hair/g' Tutorial.md -sed -i "s/@publickeyaccount1/3m\/WLUPeXeNTL\/PbnqBL3M9Pt2EzMvyFSlEPsmdLDo8=/g" Tutorial.md -sed -i "s/@short_publickeyaccount1/3m\/WLUPeXe.../g" state2_copy.fig -sed -i "s/@short_publickeyaccount1/3m\/WLUPeXe.../g" state3_copy.fig -sed -i 's/@account_anonymous/1098c9c732fc164bf4e22ad551ec2e5b531590bad4e3ee31820f011490085085#0/g' Tutorial.md -sed -i 's/@new_key/EnRbA7uAxNvDxJKbPQ5vh6PTWcewfhnunf1CfH47og8T/g' Tutorial.md -sed -i 's/@family_address/c528447126a378e816d64bf811374dceb691cc11d89589f6dca95b919adda62f/g' Tutorial.md -sed -i 's/@short_family_address/c528447126.../g' state3_copy.fig -sed -i 's/@code_family_address/7e33772fa98a58ec0e6cb80a7d76bb8410e208d77ad7e062a781782f20ed4077/g' Tutorial.md -sed -i 's/@family2_address/41a90f9525299c5df98113275ad73c7335c091446bfa5dda78394f3c7fef9ca3/g' Tutorial.md -sed -i 's/@family_exported_address/9c9866798810d966605ecdaacb8130c5d644c77ee518fe3273ac75930e107ce8/g' Tutorial.md -sed -i 's/@family3_address/54763a31c8cdf56af5f09643c9a185cedb7eb53a6eaab057fb275e7620fb709d/g' Tutorial.md -sed -i 's/@person_object/a2cbcac5034741bd711d29866cd7c6db169cee61e31817db3b40c8daf964a2d8#0/g' Tutorial.md -sed -i 's/@person2_object/121cb3b56d7fd61828b87e6e9a68bde8c14049a86d9b8156480104bc66c4f19b#0/g' Tutorial.md -sed -i 's/@person3_object/2111769886f5760d7431ab0cc2044bfe3d967ee7b67fd6917b54955a2b1db237#0/g' Tutorial.md -sed -i 's/@gradual_ponzi_address/cbae2bc748bf266d0a14061d84fe0bee3f1ff91070a47905b42e1a259e06aeef/g' Tutorial.md -sed -i 's/@gradual_ponzi_object/81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#0/g' Tutorial.md -sed -i 's/@gradual_ponzi_list/81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#1/g' Tutorial.md -sed -i 's/@gradual_ponzi_first/81443a1d24d3b7d26820c6a6b09a7d00b7ec341c46fc5db223d47393c949bf19#2/g' Tutorial.md -sed -i 's/@gradual_ponzi_last/36d36b397c0ae0a99058b93aadd11d0ab8edc217033f2d4f979f00bcaa9d9840#0/g' Tutorial.md -sed -i 's/@account2/af84c36211ed0b3b9e4b5a0c94a80f6d250be891f7e37dd87db20c5559e52b76#0/g' Tutorial.md -sed -i 's/@account3/61d7083cb775081f62bd3560074a898e88385833c254add0fbd50982b30ee7cf#0/g' Tutorial.md -sed -i 's/@account4/399952f7c726021aeeb8db4bdc168387525aa4c1732b47cabc29db1541532430#0/g' Tutorial.md -sed -i 's/@account5/4f3d5aa316baedc080bd75cfa0ed80042c049644451bbe21490a4f8aaddaf458#0/g' Tutorial.md -sed -i 's/@account6/5c3428e7967b71ca4af3c236960c93e45da09961fdc75b9f6a695910c7ddcf1d#0/g' Tutorial.md -sed -i 's/@account7/411813d7049a0bb8e3adfa2d3623bd03eae1d92654668a35f75d0fcf26f7d5e5#0/g' Tutorial.md -sed -i 's/@publickeyaccount4/i0nn\/zcy4AIPy6rref9rPjTq\/qVNIn8Zi7iPET9wLpE=/g' Tutorial.md +sed -i 's/@account1/5f705b7dc5869ae39db3bc80b7cd073c2bb55726706749138d16a4a9d0f01766#0/g' Tutorial.md +sed -i 's/@short_account1/5f705b7dc58...#0/g' state2_copy.fig +sed -i 's/@short_account1/5f705b7dc58...#0/g' state3_copy.fig +sed -i 's/@36words_of_account1/ 1: mail\n 2: better\n 3: supreme\n 4: quit\n 5: expire\n 6: forest\n 7: traffic\n 8: bus\n 9: attract\n10: gas\n11: glow\n12: team\n13: warfare\n14: color\n15: warfare\n16: radio\n17: online\n18: brother\n19: hollow\n20: jungle\n21: arena\n22: track\n23: brother\n24: lyrics\n25: relief\n26: rice\n27: orchard\n28: soldier\n29: muffin\n30: shoot\n31: fold\n32: news\n33: special\n34: level\n35: sunset\n36: hover/g' Tutorial.md +sed -i "s/@publickeyaccount1/TFqggZYjD4hvykf4rfc84J3cWgfnmFJRWd\/8P4jH2Vs=/g" Tutorial.md +sed -i "s/@short_publickeyaccount1/TFqggZYjD4.../g" state2_copy.fig +sed -i "s/@short_publickeyaccount1/TFqggZYjD4.../g" state3_copy.fig +sed -i 's/@account_anonymous/309ed8d1058c7c7df0ebf85fb37d07e386467660dca2e568436eb9972c8e27b2#0/g' Tutorial.md +sed -i 's/@new_key/9ZWQamdq5g5b4WmGaDWDzyYTt7CYCQki9LYiVekvoe2n/g' Tutorial.md +sed -i 's/@family_address/2dfdad98c8280fa5834be3fe94db06233146275641540aa179de81c1a9afaec7/g' Tutorial.md +sed -i 's/@short_family_address/2dfdad98c8.../g' state3_copy.fig +sed -i 's/@code_family_address/7b25f645b5213e0a855ce158cedc341a688c01aa77898486ff9f36ce772809a3/g' Tutorial.md +sed -i 's/@family2_address/c4e98a66ab3b4ae598d1ffaab5aa97c93a8fb8d78282abd359658794179788f6/g' Tutorial.md +sed -i 's/@family_exported_address/3d3a8e783941ac4c8ca03fc10e7967a37b9885c9ec4e006ea48eee21fa0a02c9/g' Tutorial.md +sed -i 's/@family3_address/a9d69ce22453c912a436e990074fd3493c87667ada85b6881f5566a7efae08e7/g' Tutorial.md +sed -i 's/@person_object/24a92fcb1536caf360906a4a8f7744c1d54b7ccd1396cd1db85896dcfe39f73e#0/g' Tutorial.md +sed -i 's/@person2_object/4e168218952bbfa96a85ca69c1a738d234d95174557f257601a2a3714a3a418f#0/g' Tutorial.md +sed -i 's/@person3_object/c9b88a105236b7400805731390bab5863f44b1d0b9f7d9ae7c057e3f0e832509#0/g' Tutorial.md +sed -i 's/@gradual_ponzi_address/b8b37e6a848dd59ecd091194f234ff6409705a78bc0df774d5716d5d9c611b2e/g' Tutorial.md +sed -i 's/@gradual_ponzi_object/432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#0/g' Tutorial.md +sed -i 's/@gradual_ponzi_list/432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#1/g' Tutorial.md +sed -i 's/@gradual_ponzi_first/432d5d75ebb8bcc4f52fa2c6c5b988601b79bb6e1db72e7b591c902a638237d8#2/g' Tutorial.md +sed -i 's/@gradual_ponzi_last/5bdff31c6151ec5b381e8fc43e76efd382ab20d90b004597cc133b9a1619ea49#0/g' Tutorial.md +sed -i 's/@account2/12441d4a2f52e80f93e726040fbc364b75e7fedbef96887110df678794d791ea#0/g' Tutorial.md +sed -i 's/@account3/eec01b6f22911f76dbd25bda6f850e9af9e8640a4530a46c1909f48b9c7976a3#0/g' Tutorial.md +sed -i 's/@account4/e42def4faba5d93346e4d02a1608c9fb53ba7beea84ffb0064cdfe431d079867#0/g' Tutorial.md +sed -i 's/@account5/fdb930378af70c212649e4f9b888d7c275373cf5b9601b40e4802d29fa27af89#0/g' Tutorial.md +sed -i 's/@account6/b65e5976862d6786ba9a6d2cd62b332bfa7f8859e2c8b9be3bbbe5cd64af6c1e#0/g' Tutorial.md +sed -i 's/@account7/b37b9c040474fc800079230bc51409201f12f82e220b99e7b6468c5f62591ea8#0/g' Tutorial.md +sed -i 's/@publickeyaccount4/N7hQ0gpmpV46JJlQ+7zEy7r2OTn\/jErqxV9g3+tg2\/o=/g' Tutorial.md sed -i 's/@short_publickeyaccount5/MIIDRjCCAjkGByqGSM44BAEwggIsAo.../g' Tutorial.md -sed -i 's/@tictactoe_address/6bfc957d64cefee01950a9c185e7abfc83333b5632386c7af827bfa919cfe884/g' Tutorial.md -sed -i 's/@tictactoe_object/85c41cf3c548f997c5bf791d2caaec0a9d13e6f442ce651df128c4a77d9de803#0/g' Tutorial.md -sed -i 's/@erc20_address/b72ee0386d4ecfd9a319c247da4e6f7126ac1d5eb06fbffd18020ce7effa0e0a/g' Tutorial.md -sed -i 's/@erc20_object/d9d0d07bf8b534084257122e10d5ca4d095f290d2efd0a346b99de9afb64f1aa#0/g' Tutorial.md +sed -i 's/@tictactoe_address/85a234ecc737d83f33659bc94e916e8248274f19dfc6b5f0a29dbce7f1f947ed/g' Tutorial.md +sed -i 's/@tictactoe_object/a2bf8656d4979b0f18197f28c2aab4e7dbf58a01cf9d3ed8acf3af496e4bf99b#0/g' Tutorial.md +sed -i 's/@erc20_address/3b8157f04217918a76b48fc0f4388b4bece80ad0e542c42722a887d648cd314d/g' Tutorial.md +sed -i 's/@erc20_object/2daa4ce2dbd152bcb4917fdd1574173373c77b306bcd754309da38a138ebed17#0/g' Tutorial.md sed -i 's/@server/ws:\/\/panarea.hotmoka.io/g' Tutorial.md -sed -i 's/@new_docker_key/9YWXKfU1mot3twaU8WD885GGTrzAK1A8v2JUohwBXkcD/g' Tutorial.md -sed -i 's/@container_id1/cf8d78e004372082466abfff9a5f58d97f2cbbaa02cfef97e906e2f3132e68cc/g' Tutorial.md -sed -i 's/@docker_takamaka_code/776a721ab24a0daaad8f128307ee090069646437be9469b879cfa8b8c6526afe/g' Tutorial.md -sed -i 's/@docker_manifest/477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#0/g' Tutorial.md -sed -i 's/@docker_gamete/8ee52ae1790422d4738845ff1e54c0232de55f3042e40720034e8cab909c2eae#0/g' Tutorial.md -sed -i 's/@docker_validators/477cb65e250c45f411e75b421de087f35e87454aae56c996d08cedecfe71b745#1/g' Tutorial.md -sed -i 's/@docker_validator0/e3ec768d5c4eacae8062854e84f8e848809e8fbf5b968b23fd6d7ec942bd3c57#0/g' Tutorial.md -sed -i 's/@docker_id_validator0/684CC341743E300E7A0E2718AA15788834526EE8/g' Tutorial.md -sed -i 's/@container_id2/603015fe011c516e63196566ec1ede0ebae579bdadabb5a0443ee3b370870541/g' Tutorial.md -sed -i 's/@container_id3/95d5cc7ba10b4ce6f14712786f8c3c14577d2c470b4e5e34eadeb2777df5f6be/g' Tutorial.md -sed -i 's/@docker_new_account/7b19fe903a39002b4a2404277a42350ba3dc96df041e854bbf6cc644c82fb902#0/g' Tutorial.md -sed -i 's/@docker_total_gas_new_account/2563/g' Tutorial.md -sed -i 's/@docker_reduced_balance/999999998762870/g' Tutorial.md +sed -i 's/@new_docker_key/AsqsX1tBMriz18xvoxvc64K4HAvxgFmwWryKcMeR64oc/g' Tutorial.md +sed -i 's/@container_id1/00a196685e5c8a8d788b892cb09a994e48016d736bfeaf89c1f339d72f7a717b/g' Tutorial.md +sed -i 's/@docker_takamaka_code/ae8e94c789fb66784a6cc4208c797c80cbce2721292d636b963184fc266abe42/g' Tutorial.md +sed -i 's/@docker_manifest/9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#0/g' Tutorial.md +sed -i 's/@docker_gamete/3a6eaf6df650bad0120f72c0fb962a976337ef4360407135e2e122699e40b8e7#0/g' Tutorial.md +sed -i 's/@docker_validators/9f6d963231e8f22530496c1b38ce38b60df2c90c7d2d9176706dbe3ac8f934d1#1/g' Tutorial.md +sed -i 's/@docker_validator0/7779e885c98d631e489738dfd621763959a84bc57ae9e002f9947d15a518b27c#0/g' Tutorial.md +sed -i 's/@docker_id_validator0/84694297DB4B75A1B0C810F051035A0D7A8A3D99/g' Tutorial.md +sed -i 's/@container_id2/3f59c2cdb0a57c5f3df2da7a018ccfa16f7fa48f73e65970b4bf8da60e3972c7/g' Tutorial.md +sed -i 's/@container_id3/b83bd0a5e49ed82278742f49b1490abd8a84c103fc684cb4b0222a292a6863f5/g' Tutorial.md +sed -i 's/@docker_new_account/44ca934098eb91fcc5efe1a6e67e29cf39179e94ce78cf08a71850c1add2e38f#0/g' Tutorial.md +sed -i 's/@docker_total_gas_new_account/2565/g' Tutorial.md +sed -i 's/@docker_reduced_balance/999999998762868/g' Tutorial.md sed -i 's/@docker_balance_validator0/642/g' Tutorial.md -sed -i 's/@docker_staked_validator0/1923/g' Tutorial.md -sed -i 's/@docker_diff1/1237130/g' Tutorial.md -sed -i 's/@docker_diff2/2563/g' Tutorial.md +sed -i 's/@docker_staked_validator0/1925/g' Tutorial.md +sed -i 's/@docker_diff1/1237132/g' Tutorial.md +sed -i 's/@docker_diff2/2565/g' Tutorial.md sed -i 's/@docker_diff3/2/g' Tutorial.md -sed -i 's/@docker_sum1/2565/g' Tutorial.md +sed -i 's/@docker_sum1/2567/g' Tutorial.md # we regenerate the png figures, since they might contain some string changed # by previous sed commands @@ -136,7 +136,7 @@ sed -i "s/\[Hotmokaonly]://g" ProgrammingHotmoka.md # These must be edited by hand since, for instance, they depend on accounts created in Mokito or on the configuration (hotmoka/blueknot) sed -i 's/@tendermint_version/0.34.15/g' ProgrammingHotmoka.md -sed -i 's/@takamaka_version/1.3.0/g' ProgrammingHotmoka.md +sed -i 's/@takamaka_version/1.3.1/g' ProgrammingHotmoka.md sed -i 's/@tool_repo/https:\/\/github.com\/Hotmoka\/hotmoka/g' ProgrammingHotmoka.md sed -i 's/@tool/moka/g' ProgrammingHotmoka.md sed -i 's/@Tool/Moka/g' ProgrammingHotmoka.md