From e446785da2c5905d3be0af96268624861c013e4b Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 08:55:38 -0400 Subject: [PATCH 01/37] Part 1: simple contract and test, deploy with mockup mode --- docs/tutorials/smartpy-fa2-fungible.md | 41 ++ .../smartpy-fa2-fungible/basic-fa2-token.md | 490 ++++++++++++++++++ sidebars.js | 11 + 3 files changed, 542 insertions(+) create mode 100644 docs/tutorials/smartpy-fa2-fungible.md create mode 100644 docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md new file mode 100644 index 000000000..b37b86aba --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible.md @@ -0,0 +1,41 @@ +--- +title: Create a fungible token with the SmartPy FA2 library +authors: Tim McMackin +last_update: + date: 18 April 2024 +--- + +This tutorial shows you how to use SmartPy's FA2 library to create standards-compliant tokens. + +In this tutorial you will learn: + +- What a fungible token is and how it works +- What the FA2 standard is and why token standards are important +- How to write contracts in SmartPy +- How to use the SmartPy FA2 library to create contracts +- How to use a local sandbox to test contracts +- How to write custom token behaviors +- How to deploy the contract +- How to interact with tokens directly in wallet apps + +## Prerequisites + +To run this tutorial, you should have a basic understanding of how Tezos works, what blockchain tokens are, and the ability to use the command-line terminal on your computer. + +## What is a fungible token? + +TODO + +## What is the FA2 standard? + +TODO + +## What features does the SmartPy FA2 library have? + +TODO + +## Tutorial application + +TODO + +When you're ready, move to the next section to start setting up your token. \ No newline at end of file diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md new file mode 100644 index 000000000..5cd18c8b9 --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -0,0 +1,490 @@ +--- +title: "Part 1: Setting up a simple FA2 token" +authors: Tim McMackin +last_update: + date: 19 April 2024 +--- + +In this part, you create an FA2 token contact that has only the basic features that the standard requires. +For example, the standard does not require the contract to have `mint` and `burn` entrypoints that allow administrators to create and destroy tokens. +In this case, you create the contract with all of the tokens that it will ever have. + +## Prerequisites + +To run this part of the tutorial, makes sure that you have the following tools installed: + +- [Python](https://www.python.org/) and the `pip` package manager +- [SmartPy](https://smartpy.io/manual/introduction/installation) + +## Using the library to create a contract + +The FA2 library provides classes that you can extend to create your contract class. +Each class creates a certain type of token contract: + +- `main.Nft`: Non-fungible tokens, which are unique digital assets +- `main.Fungible`: Fungible tokens, which are interchangeable assets, like tez or other cryptocurrencies +- `main.SingleAsset`: Single-asset tokens, which are a simplified case of fungible tokens, allowing only one token type per contract + +Follow these steps to create your own token contract based on the `main.Fungible` base class: + +1. Create a Python file with a `.py` extension, such as `fa2_fungible_simple.py`. + +1. In the file, import SmartPy and its FA2 modules: + + ```smartpy + import smartpy as sp + from smartpy.templates import fa2_lib as fa2 + + # Alias the main template for FA2 contracts + main = fa2.main + ``` + +1. Create a SmartPy module to store your contract class: + + ```smartpy + @sp.module + def my_module(): + ``` + +1. In the module, create a contract class that inherits from the base class and the `OnchainviewBalanceOf` class, which provides an on-chain view that provides token balances: + + ```smartpy + class MyFungibleContract( + main.Fungible, + main.OnchainviewBalanceOf, + ): + ``` + +1. Create the contract's `__init__()` method and initialize the superclasses: + + ```smartpy + def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + + # Initialize on-chain balance view + main.OnchainviewBalanceOf.__init__(self) + + # Initialize fungible token base class + main.Fungible.__init__(self, contract_metadata, ledger, token_metadata) + ``` + + Note the order of these classes both in the `class` statement and within the `__init__()` method. + You must inherit and initialize these classes in a specific order for them to work, as described in [Mixins](https://smartpy.io/guides/FA2-lib/mixins). + +1. Outside the module, add these two utility functions to call views in the contract: + + ```smartpy + def _get_balance(fa2_contract, args): + """Utility function to call the contract's get_balance view to get an account's token balance.""" + return sp.View(fa2_contract, "get_balance")(args) + + + def _total_supply(fa2_contract, args): + """Utility function to call the contract's total_supply view to get the total amount of tokens.""" + return sp.View(fa2_contract, "total_supply")(args) + ``` + +At this point, the contract looks like this: + +```smartpy +import smartpy as sp +from smartpy.templates import fa2_lib as fa2 + +# Alias the main template for FA2 contracts +main = fa2.main + + +@sp.module +def my_module(): + class MyFungibleContract( + main.Fungible, + main.OnchainviewBalanceOf, + ): + def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + + # Initialize on-chain balance view + main.OnchainviewBalanceOf.__init__(self) + + # Initialize fungible token base class + main.Fungible.__init__(self, contract_metadata, ledger, token_metadata) + + +def _get_balance(fa2_contract, args): + """Utility function to call the contract's get_balance view to get an account's token balance.""" + return sp.View(fa2_contract, "get_balance")(args) + + +def _total_supply(fa2_contract, args): + """Utility function to call the contract's total_supply view to get the total amount of tokens.""" + return sp.View(fa2_contract, "total_supply")(args) +``` + +Indentation is significant in Python, so make sure that your contract is indented like this example. + +This short contract is all of the necessary code for a basic FA2 token contract. +The inherited classes provide all of the necessary entrypoints. + +Note that the `__init__()` method accepts a parameter that is currently unused: `admin_address`. +In later parts of the tutorial, you will use as the address as the administrator for the contract. + +## Adding the contract to a test scenario + +SmartPy provides a testing framework that runs contracts in a realistic simulation called a test scenario. +This test scenario is also the way SmartPy compiles contracts to Michelson for deployment, so you must add your contract to a test scenario. + +1. At the end of the same file as the contract, define a test scenario function with this code: + + ```smartpy + @sp.add_test() + def test(): + ``` + + The code within this scenario is ordinary Python, not SmartPy, so you can do all of the things that you can normally do in Python, including importing modules and calling external APIs. + Code within a SmartPy module (annotated with `@sp.module`) is SmartPy code and is limited by what you can do in smart contracts. + Importing modules and calling external APIs isn't possible in SmartPy modules, except for the modules that SmartPy provides. + +1. Inside the test scenario function, initialize the test scenario by passing a name for the scenario and the modules to use in the scenario to the `sp.test_scenario` function: + + ```smartpy + # Create and configure the test scenario + # Import the types from the FA2 library, the library itself, and the contract module, in that order. + scenario = sp.test_scenario("fa2_lib_fungible", [fa2.t, fa2.main, my_module]) + ``` + +1. Define test accounts to use in the scenario with the `sp.test_account` function: + + ```smartpy + # Define test accounts + admin = sp.test_account("Admin") + alice = sp.test_account("Alice") + bob = sp.test_account("Bob") + ``` + +1. Set up token metadata, which describes the tokens to users. +For example, these lines create metadata for two token types, named `Token Zero` and `Token One`: + + ```smartpy + # Define initial token metadata + tok0_md = fa2.make_metadata(name="Token Zero", decimals=0, symbol="Tok0") + tok1_md = fa2.make_metadata(name="Token One", decimals=0, symbol="Tok1") + ``` + + The `fa2.make_metadata` function creates a token metadata object that complies with the [TZIP-12](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-12/tzip-12.md) standard. + + Your contract can have as many types of fungible tokens as you want, but the examples in this tutorial use these two token types. + +1. Create the starting ledger for the contract, which lists the tokens and their owners. +This example gives 10 of token 0 to the Alice test account and 10 of token 1 to the Bob test account: + + ```smartpy + # Define tokens and initial owners + # ledger_fungible: type = sp.big_map[sp.pair[sp.address, sp.nat], sp.nat] + initial_ledger = sp.map() # If I use big_map here it fails + sp.cast(initial_ledger, fa2.t.ledger_fungible) + initial_ledger = sp.update_map(sp.pair(alice.address, 0), sp.Some(10), initial_ledger) + initial_ledger = sp.update_map(sp.pair(bob.address, 1), sp.Some(10), initial_ledger) + ``` + + The type of this ledger is set by the FA2 standard, so casting it to the `ledger_fungible` type helps you make sure that your ledger matches the standard. + + The ledger is a big map where the key is a pair of the token owner and token ID and the value is the amount of tokens. + In table format, the ledger looks like this: + + key | value + --- | --- + Alice, token ID 0 | 10 + Bob, token ID 1 | 10 + + You can distribute tokens to any accounts that you want in the test scenario. + Because the contract has no `mint` entrypoint, this initial ledger defines all of the tokens and token types that the contract contains. + +1. Create an instance of the contract in the test scenario and pass the values for its initial storage: + + ```smartpy + # Instantiate the FA2 fungible token contract + contract = my_module.MyFungibleContract(admin.address, sp.big_map(), initial_ledger, [tok0_md, tok1_md]) + ``` + + These are the parameters for the contract's `__init__()` method: + + - The address of the administrator account, which will be used later + - The contract metadata, which is blank for now + - The initial ledger + - The metadata for the token types, in a list + +1. Add the contract to the test scenario, which deploys (originates) it to the simulated Tezos environment: + + ```smartpy + # Originate the contract in the test scenario + scenario += contract + `````` + +At this point, the contract looks like this: + +```smartpy +import smartpy as sp +from smartpy.templates import fa2_lib as fa2 + +# Alias the main template for FA2 contracts +main = fa2.main + + +@sp.module +def my_module(): + class MyFungibleContract( + main.Fungible, + main.OnchainviewBalanceOf, + ): + def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + + # Initialize on-chain balance view + main.OnchainviewBalanceOf.__init__(self) + + # Initialize fungible token base class + main.Fungible.__init__(self, contract_metadata, ledger, token_metadata) + + +def _get_balance(fa2_contract, args): + """Utility function to call the contract's get_balance view to get an account's token balance.""" + return sp.View(fa2_contract, "get_balance")(args) + + +def _total_supply(fa2_contract, args): + """Utility function to call the contract's total_supply view to get the total amount of tokens.""" + return sp.View(fa2_contract, "total_supply")(args) + + +@sp.add_test() +def test(): + # Create and configure the test scenario + # Import the types from the FA2 library, the library itself, and the contract module, in that order. + scenario = sp.test_scenario("fa2_lib_fungible", [fa2.t, fa2.main, my_module]) + + # Define test accounts + admin = sp.test_account("Admin") + alice = sp.test_account("Alice") + bob = sp.test_account("Bob") + + # Define initial token metadata + tok0_md = fa2.make_metadata(name="Token Zero", decimals=0, symbol="Tok0") + tok1_md = fa2.make_metadata(name="Token One", decimals=0, symbol="Tok1") + + # Define tokens and initial owners + # ledger_fungible: type = sp.big_map[sp.pair[sp.address, sp.nat], sp.nat] + initial_ledger = sp.map() # If I use big_map here it fails + sp.cast(initial_ledger, fa2.t.ledger_fungible) + initial_ledger = sp.update_map(sp.pair(alice.address, 0), sp.Some(10), initial_ledger) + initial_ledger = sp.update_map(sp.pair(bob.address, 1), sp.Some(10), initial_ledger) + + # Instantiate the FA2 fungible token contract + contract = my_module.MyFungibleContract(admin.address, sp.big_map(), initial_ledger, [tok0_md, tok1_md]) + + # Originate the contract in the test scenario + scenario += contract +``` + +## Adding tests + +SmartPy has built-in tools for testing contracts as part of the test scenario. +In test scenarios, you can call contract entrypoints, verify the contract storage, and do other things to make sure that the contract is working as expected. + +Follow these steps to add tests to the contract: + +1. At the end of the file, add this code to verify the initial state of the ledger: + + ```smartpy + scenario.h2("Verify the initial owners of the tokens") + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 10 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=0)) == 0 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 0 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=1)) == 10 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 10) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 10) + ``` + + This code uses the `get_balance_of` and `total_supply` views to check the current owners of the tokens and the total amount of tokens when the contract is deployed. + + Note that the calls to these views are within the `scenario.verify` function. + To verify details about the deployed contract, you must use this function to access the state of the contract within the test scenario. + +1. Add this code to call the contract's `transfer` entrypoint and verify that the tokens transferred correctly: + + ```smartpy + scenario.h2("Transfer tokens") + # Bob sends 3 of token 1 to Alice + contract.transfer( + [ + sp.record( + from_=bob.address, + txs=[sp.record(to_=alice.address, amount=3, token_id=1)], + ), + ], + _sender=bob, + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 10 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=0)) == 0 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 3 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=1)) == 7 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 10) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 10) + ``` + + This code calls the transfer entrypoint, passes the transfer information, and adds the `_sender=bob` parameter to indicate that the transfer came from Bob's account. + Then it calls the contract's views again to verify that the tokens were transferred and that the total supply of tokens remains the same. + +1. Test an entrypoint call that should fail by adding this code: + + ```smartpy + # Bob cannot transfer Alice's tokens + contract.transfer( + [ + sp.record( + from_=alice.address, + txs=[sp.record(to_=bob.address, amount=1, token_id=0)], + ), + ], + _sender=bob, + _valid=False, + ) + ``` + + This call should fail because it comes from Bob's account but the call tries to transfer tokens out of Alice's account. + The call includes the `_valid=False` parameter to indicate that this call should fail. + +You can add any number of tests to your test scenario. +In practice, you should test all features of your contract thoroughly to identify any problems before deployemnt. + +## Compiling the contract + +To compile the contract, use the `python` command, just like any other Python file: + +```bash +python fa2_fungible_simple.py +``` + +If the command shows any errors, make sure that your contract matches the example. +In particular, check your indentation, because indentation is significant in Python and SmartPy. + +If SmartPy compiles your contract successfully, nothing is printed to the command line output. +Its compiler writes your contract to a folder with the name in the `sp.test_scenario` function, which is `fa2_lib_fungible` in this example. +This folder has many files, including: + +- `log.txt`: A compilation log that lists the steps in the test scenario and connects them to the other files that the compiler created. +- `step_003_cont_0_contract.tz`: The compiled Michelson contract, which is what you deploy to Tezos in the next section. +The compiler also creates a JSON version of the compiled contract. +- `step_003_cont_0_storage.tz`: The compiled Michelson value of the initial contract storage, based on the parameters you passed when you instantiated the contract in the test scenario. +The compiler also creates a JSON and Python version of the storage. +- `step_003_cont_0_types.py`: The Python types that the contract uses, which can help you call the contract from other SmartPy contracts. + +You can use the compiled contract and storage files to deploy the contract. +In the next section, you deploy the contract to a local Tezos sandbox. + +## (Optional) Deploy the contract to the Octez client mockup mode + +The Octez client provides a few local sandbox modes that you can use to test contracts without uploading them to a test network or running a local Tezos environment. + +Follow these steps to set up the Octez client mockup mode and deploy the contract to it: + +1. Install the Octez client by following the steps in [Installing the Octez client](../../developing/octez-client/installing). + +1. Set up the Octez client mockup mode: + + 1. Run this command to start mockup mode: + + ```bash + octez-client \ + --protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK \ + --base-dir /tmp/mockup \ + --mode mockup \ + create mockup + ``` + + Now you can run commands in mockup mode by prefixing them with `octez-client --mode mockup --base-dir /tmp/mockup`. + + 1. Create an alias for mockup mode: + + ```bash + alias mockup-client='octez-client --mode mockup --base-dir /tmp/mockup' + ``` + + Now you can run commands in mockup mode with the `mockup-client` alias, as in this example: + + ```bash + mockup-client list known addresses + ``` + +1. Deploy the contract to mockup mode: + + 1. Create two Octez accounts to represent the Alice and Bob accounts in the test scenario: + + ```bash + mockup-client gen keys alice + mockup-client gen keys bob + ``` + + 1. Get the addresses for Alice and Bob by running this command: + + ```bash + mockup-client list known addresses + ``` + + 1. Replace the addresses in the initial storage value in the `step_003_cont_0_storage.tz` file with the mockup addresses. + For example, the file might look like this: + + ```michelson + (Pair {Elt (Pair "tz1Utg2AKcbLgVokY7J8QiCjcfo5KHk3VtHU" 1) 10; Elt (Pair "tz1XeaZgLqgCqMA3Egz5Q7bqiqdFefaNoQd5" 0) 10} (Pair {} (Pair 2 (Pair {} (Pair {Elt 0 10; Elt 1 10} {Elt 0 (Pair 0 {Elt "decimals" 0x30; Elt "name" 0x546f6b656e205a65726f; Elt "symbol" 0x546f6b30}); Elt 1 (Pair 1 {Elt "decimals" 0x30; Elt "name" 0x546f6b656e204f6e65; Elt "symbol" 0x546f6b31})}))))) + ``` + + Now you can use this file as the initial storage value and give the initial tokens to the mockup addresses. + + 1. Deploy the contract by passing the compiled contract and initial storage value to the `originate contract` command. + For example, if your compiled files are in the `fa2_lib_fungible` folder, the command looks like this: + + ```bash + mockup-client originate contract smartpy_fa2_fungible \ + transferring 0 from bootstrap1 \ + running fa2_lib_fungible/step_003_cont_0_contract.tz \ + --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 2 --force + ``` + + If you see errors that refer to unexpected characters, make sure the paths to the files are correct and that you changed only the content of addresses inside quotes in the storage file. + + If you see the error "Keys in a map literal must be in strictly ascending order, but they were unordered in literal," reverse the order of the two addresses. + + If the deployment succeeds, the Octez client prints the address of the contract and aliases it as `smartpy_fa2_fungible`. + + 1. Use the built-in `get_balance_of` view to see the tokens that one of the accounts owns: + + ```bash + mockup-client run view get_balance_of \ + on contract smartpy_fa2_fungible with input '{Pair "tz1Utg2AKcbLgVokY7J8QiCjcfo5KHk3VtHU" 1}' + ``` + + The response shows a Michelson value that includes the ID and amount of tokens that the address owns, as in this example: + + ```michelson + { Pair (Pair "tz1Utg2AKcbLgVokY7J8QiCjcfo5KHk3VtHU" 1) 10 } + ``` + + + +For more information, see [Mockup mode](https://tezos.gitlab.io/user/mockup.html) in the Octez documentation. + +Now you have a basic FA2 fungible token contract that starts with a predefined amount of tokens. + +In the next part, you add minting and burning functionality to the contract so an administrator can create and destroy tokens. diff --git a/sidebars.js b/sidebars.js index 02793cc90..d781d8bc3 100644 --- a/sidebars.js +++ b/sidebars.js @@ -308,6 +308,17 @@ const sidebars = { 'tutorials/build-your-first-app/getting-information', ], }, + { + type: 'category', + label: 'Create a fungible token with the SmartPy FA2 library', + link: { + type: 'doc', + id: 'tutorials/smartpy-fa2-fungible', + }, + items: [ + 'tutorials/smartpy-fa2-fungible/basic-fa2-token', + ], + }, 'tutorials/create-an-nft/nft-taquito', 'tutorials/create-an-nft/nft-tznft', { From 110a1386dc9fb73c070d61148a48851b68aa4576 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 09:27:11 -0400 Subject: [PATCH 02/37] hide admin for now --- .../smartpy-fa2-fungible/basic-fa2-token.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 5cd18c8b9..4ec263444 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -58,7 +58,7 @@ Follow these steps to create your own token contract based on the `main.Fungible 1. Create the contract's `__init__()` method and initialize the superclasses: ```smartpy - def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + def __init__(self, contract_metadata, ledger, token_metadata): # Initialize on-chain balance view main.OnchainviewBalanceOf.__init__(self) @@ -99,7 +99,7 @@ def my_module(): main.Fungible, main.OnchainviewBalanceOf, ): - def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + def __init__(self, contract_metadata, ledger, token_metadata): # Initialize on-chain balance view main.OnchainviewBalanceOf.__init__(self) @@ -123,9 +123,6 @@ Indentation is significant in Python, so make sure that your contract is indente This short contract is all of the necessary code for a basic FA2 token contract. The inherited classes provide all of the necessary entrypoints. -Note that the `__init__()` method accepts a parameter that is currently unused: `admin_address`. -In later parts of the tutorial, you will use as the address as the administrator for the contract. - ## Adding the contract to a test scenario SmartPy provides a testing framework that runs contracts in a realistic simulation called a test scenario. @@ -154,7 +151,6 @@ This test scenario is also the way SmartPy compiles contracts to Michelson for d ```smartpy # Define test accounts - admin = sp.test_account("Admin") alice = sp.test_account("Alice") bob = sp.test_account("Bob") ``` @@ -201,12 +197,11 @@ This example gives 10 of token 0 to the Alice test account and 10 of token 1 to ```smartpy # Instantiate the FA2 fungible token contract - contract = my_module.MyFungibleContract(admin.address, sp.big_map(), initial_ledger, [tok0_md, tok1_md]) + contract = my_module.MyFungibleContract(sp.big_map(), initial_ledger, [tok0_md, tok1_md]) ``` These are the parameters for the contract's `__init__()` method: - - The address of the administrator account, which will be used later - The contract metadata, which is blank for now - The initial ledger - The metadata for the token types, in a list @@ -234,7 +229,7 @@ def my_module(): main.Fungible, main.OnchainviewBalanceOf, ): - def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + def __init__(self, contract_metadata, ledger, token_metadata): # Initialize on-chain balance view main.OnchainviewBalanceOf.__init__(self) @@ -260,7 +255,6 @@ def test(): scenario = sp.test_scenario("fa2_lib_fungible", [fa2.t, fa2.main, my_module]) # Define test accounts - admin = sp.test_account("Admin") alice = sp.test_account("Alice") bob = sp.test_account("Bob") @@ -276,7 +270,7 @@ def test(): initial_ledger = sp.update_map(sp.pair(bob.address, 1), sp.Some(10), initial_ledger) # Instantiate the FA2 fungible token contract - contract = my_module.MyFungibleContract(admin.address, sp.big_map(), initial_ledger, [tok0_md, tok1_md]) + contract = my_module.MyFungibleContract(sp.big_map(), initial_ledger, [tok0_md, tok1_md]) # Originate the contract in the test scenario scenario += contract From d0dd173638d6bd649955c74a4dd924fe1ada2c2f Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 09:44:11 -0400 Subject: [PATCH 03/37] links to completed contracts and TODOs for troubleshooting --- .../smartpy-fa2-fungible/basic-fa2-token.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 4ec263444..a79d705c3 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -16,6 +16,10 @@ To run this part of the tutorial, makes sure that you have the following tools i - [Python](https://www.python.org/) and the `pip` package manager - [SmartPy](https://smartpy.io/manual/introduction/installation) +## Tutorial contract + +TODO link to completed contract + ## Using the library to create a contract The FA2 library provides classes that you can extend to create your contract class. @@ -371,9 +375,6 @@ To compile the contract, use the `python` command, just like any other Python fi python fa2_fungible_simple.py ``` -If the command shows any errors, make sure that your contract matches the example. -In particular, check your indentation, because indentation is significant in Python and SmartPy. - If SmartPy compiles your contract successfully, nothing is printed to the command line output. Its compiler writes your contract to a folder with the name in the `sp.test_scenario` function, which is `fa2_lib_fungible` in this example. This folder has many files, including: @@ -388,6 +389,15 @@ The compiler also creates a JSON and Python version of the storage. You can use the compiled contract and storage files to deploy the contract. In the next section, you deploy the contract to a local Tezos sandbox. +## Troubleshooting + +If the `python` command shows any errors, make sure that your contract matches the example. +In particular, check your indentation, because indentation is significant in Python and SmartPy. + +You can compare your contract with the completed contract here: TODO link to completed contract. + +TODO more troubleshooting + ## (Optional) Deploy the contract to the Octez client mockup mode The Octez client provides a few local sandbox modes that you can use to test contracts without uploading them to a test network or running a local Tezos environment. From 5685ac12e4b3ebee58be362de6949544f53a12c7 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 10:37:54 -0400 Subject: [PATCH 04/37] not sure about naming --- docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index a79d705c3..a1a3cc0f4 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -31,7 +31,7 @@ Each class creates a certain type of token contract: Follow these steps to create your own token contract based on the `main.Fungible` base class: -1. Create a Python file with a `.py` extension, such as `fa2_fungible_simple.py`. +1. Create a Python file with a `.py` extension, such as `fa2_fungible.py`. 1. In the file, import SmartPy and its FA2 modules: @@ -372,7 +372,7 @@ In practice, you should test all features of your contract thoroughly to identif To compile the contract, use the `python` command, just like any other Python file: ```bash -python fa2_fungible_simple.py +python fa2_fungible.py ``` If SmartPy compiles your contract successfully, nothing is printed to the command line output. From 792afd1af59e60efa4f34da210854c6f8424c75e Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 10:38:40 -0400 Subject: [PATCH 05/37] Adding mint and burn entrypoints --- .../minting-and-burning.md | 172 ++++++++++++++++++ sidebars.js | 1 + 2 files changed, 173 insertions(+) create mode 100644 docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md diff --git a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md new file mode 100644 index 000000000..be45f6368 --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md @@ -0,0 +1,172 @@ +--- +title: "Part 2: Adding minting and burning entrypoints" +authors: Tim McMackin +last_update: + date: 19 April 2024 +--- + +In this part, you add entrypoints that allow an administrator account to create tokens and allow users to burn their own tokens. + +The SmartPy FA2 library provides _mixins_ that add these entrypoints so you don't have to code them yourself. +Mixins are modular classes that add specific pieces of functionality. + +## Tutorial contract + +TODO link to completed contract + +## Adding the admin, mint, and burn entrypoints + +To add mint and burn entrypoints to the contract, you need three mixins: the mixins for those two entrypoints and a mixin that enables administrator functionality. +Only the admin account can mint tokens, but anyone can burn their own tokens. + +1. In the contract, update the `class` statement to include the new mixins: + + ```smartpy + # Order of inheritance: [Admin], [], , []. + class MyFungibleContract( + main.Admin, + main.Fungible, + main.MintFungible, + main.BurnFungible, + main.OnchainviewBalanceOf, + ): + ``` + +1. Update the `__init__()` function to accept the admin address and initialize the mixins: + + ```smartpy + def __init__(self, admin_address, contract_metadata, ledger, token_metadata): + + # Initialize on-chain balance view + main.OnchainviewBalanceOf.__init__(self) + + # Initialize the fungible token-specific entrypoints + main.BurnFungible.__init__(self) + main.MintFungible.__init__(self) + + # Initialize fungible token base class + main.Fungible.__init__(self, contract_metadata, ledger, token_metadata) + + # Initialize administrative permissions + main.Admin.__init__(self, admin_address) + ``` + + The order that you import and initialize the mixins is significant, so make sure your updates match the code above. + +1. In the test scenario, add an administrator test account to the existing Alice and Bob test accounts: + + ```smartpy + # Define test accounts + admin = sp.test_account("Admin") + alice = sp.test_account("Alice") + bob = sp.test_account("Bob")``` + +1. Update the command to deploy the contract to include the administrator address: + + ```smartpy + # Instantiate the FA2 fungible token contract + contract = my_module.MyFungibleContract(admin.address, sp.big_map(), initial_ledger, [tok0_md, tok1_md]) + ``` + +1. At the end of the test scenario, add a test to verify that the admin account can mint more of an existing token: + + ```smartpy + scenario.h2("Mint tokens") + + # Mint more of an existing token + contract.mint( + [ + sp.record(to_=alice.address, amount=4, token=sp.variant("existing", 0)), + sp.record(to_=bob.address, amount=4, token=sp.variant("existing", 1)), + ], + _sender=admin, + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 10 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=0)) == 4 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 3 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=1)) == 11 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 14) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 14) + ``` + +1. Add a test to verify that other users can't mint tokens: + + ```smartpy + # Other users can't mint tokens + contract.mint( + [ + sp.record(to_=alice.address, amount=4, token=sp.variant("existing", 0)), + ], + _sender=alice, + _valid=False + ) + ``` + +1. Add a test to verify that the admin account can create a new token type: + + ```smartpy + # Create a token type + tok2_md = fa2.make_metadata(name="Token Two", decimals=0, symbol="Tok2") + contract.mint( + [ + sp.record(to_=alice.address, amount=5, token=sp.variant("new", tok2_md)), + ], + _sender=admin, + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=2)) == 5 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=2)) == 0 + ) + ``` + +1. Add a test to verify that users can burn their tokens but not other accounts' tokens: + + ```smartpy + scenario.h2("Burn tokens") + # Verify that you can burn your own token + contract.burn([sp.record(token_id=2, from_=alice.address, amount=1)], _sender=alice) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=2)) == 4 + ) + # Verify that you can't burn someone else's token + contract.burn( + [sp.record(token_id=2, from_=alice.address, amount=1)], + _sender=bob, + _valid=False, + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=2)) == 4 + ) + scenario.verify( + _total_supply(contract, sp.record(token_id=2)) == 4 + ) + ``` + +1. Run the `python fa2_fungible.py` command to compile and test your contract. +If you see any errors, make sure that your code matches the code above or compare with the completed contract here: TODO completed contract. + +Note that there are many more output files in the `fa2_lib_fungible` folder. +The SmartPy compiler creates output files for each call to an entrypoint in the test scenario. +You can use these files to verify that the scenario is testing the contract properly. + +You can also use these files as precompiled parameters for contract calls, as shown in the next section. + +## Calling the contract + +TODO how to test mint and burn? We have to set up the admin account, send tez, get the params from an output file, and call the contract. + + + + +Now you have an FA2 token contract with minting and burning functionality. +In the next part, you add metadata to provide information about the contract and its tokens to apps such as wallets. diff --git a/sidebars.js b/sidebars.js index d781d8bc3..0ee16d5fb 100644 --- a/sidebars.js +++ b/sidebars.js @@ -317,6 +317,7 @@ const sidebars = { }, items: [ 'tutorials/smartpy-fa2-fungible/basic-fa2-token', + 'tutorials/smartpy-fa2-fungible/minting-and-burning', ], }, 'tutorials/create-an-nft/nft-taquito', From f9f6818818cfb8e3de464be2862b7ace2a9537c0 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 13:05:14 -0400 Subject: [PATCH 06/37] Metadata --- .../smartpy-fa2-fungible/adding-metadata.md | 127 ++++++++++++++++++ sidebars.js | 1 + static/img/tutorials/pinata-pinned-file.png | Bin 0 -> 30295 bytes 3 files changed, 128 insertions(+) create mode 100644 docs/tutorials/smartpy-fa2-fungible/adding-metadata.md create mode 100644 static/img/tutorials/pinata-pinned-file.png diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md new file mode 100644 index 000000000..52b8d1108 --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -0,0 +1,127 @@ +--- +title: "Part 3: Adding metadata" +authors: Tim McMackin +last_update: + date: 19 April 2024 +--- + +In this part, you configure the metadata for the contract. + +Contract metadata provides details about the contract itself, including its name, description, and what standards it follows. +This information lets off-chain applications like wallets and block explorers show information about the contract. + +Generally, contracts store their metadata off-chain and include only a link to it in their storage. +Storing the metadata off-chain saves space and makes it easier for off-chain applications to access it. + +Many contracts store their metadata using the InterPlanetary File System (IPFS) protocol. +This protocol stores files in a decentralized network and indexes them by their hash, so users can be assured that the files have not changed. + +TODO mention token meta, error message meta? + +## Getting a Pinata API key + +SmartPy test scenarios can upload files to IPFS with [Pinata](https://www.pinata.cloud/), so to follow this part of the tutorial, you need a free account on https://www.pinata.cloud and an API key. + +Follow these steps to create a Pinata API key: + +1. Create a free Pinata account at https://app.pinata.cloud/developers/api-keys. + +1. Go to the API Keys tab and click **New Key**. + +1. On the Create New API Key page, expand API Endpoint Access and enable the `pinFileToIPFS` permission, as in this picture: + + ![Selecting the permissions for the Pinata key](/img/tutorials/pinata-key-permissions.png) + +1. In the **Key Name** field, give the key a name, such as "My Key." + +1. Click **Create Key**. + + The API Key Info window shows the API key and secret, which you must copy immediately, because it is not shown again. + +1. Copy the API Key and API Secret fields and save the values on your computer. +You need these values in the next section. + + You can see the new API key on the API Keys tab: + + ![The new Pinata API key in the Pinata web app](/img/tutorials/created-pinata-key.png) + +## Uploading metadata + +The SmartPy `sp.pin_on_ipfs` function uploads (or "pins") metadata to IPFS via your Pinata account. +In this section, you add code to use this function to upload contract metadata to IPFS when the test scenario runs. + +1. After the code that instantiates the contract in the test scenario, use the `sp.create_tzip16_metadata` function to create a metadata object that is compatible with the [TZIP-16](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-16/tzip-16.md) standard for contract metadata: + + ```smartpy + # Build contract metadata content + contract_metadata = sp.create_tzip16_metadata( + name="My FA2 fungible token contract", + description="This is an FA2 fungible token contract using SmartPy.", + version="1.0.0", + license_name="CC-BY-SA", + license_details="Creative Commons Attribution Share Alike license 4.0 https://creativecommons.org/licenses/by/4.0/", + interfaces=["TZIP-012", "TZIP-016"], + authors=["SmartPy "], + homepage="https://smartpy.io/ide?template=fa2_lib_fungible.py", + # Optionally, upload the source code to IPFS and add the URI here + source_uri=None, + offchain_views=contract.get_offchain_views(), + ) + ``` + + This code must come after you create the contract because it uses the `contract.get_offchain_views` function to retrieve the contract's off-chain views. + Off-chain views are stored in metadata, not in the contract code or storage. + +1. Add permission information to the metadata with this code: + + ```smartpy + # Add the info specific to FA2 permissions + contract_metadata["permissions"] = { + # The operator policy chosen: + # owner-or-operator-transfer is the default. + "operator": "owner-or-operator-transfer", + # Those two options should always have these values. + # It means that the contract doesn't use the hook mechanism. + "receiver": "owner-no-hook", + "sender": "owner-no-hook", + } + ``` + + This metadata describes who is allowed to transfer tokens. + The permissions in this code allow token owners and operators to transfer tokens. + For more information about operators, see [FA2 tokens](../../architecture/tokens/FA2). + +1. Pin the metadata to IPFS and get its URI with this code: + + ```smartpy + # Upload the metadata to IPFS and get its URI + metadata_uri = sp.pin_on_ipfs(contract_metadata, api_key=None, secret_key=None) + ``` + +1. Update the `None` values in the `sp.pin_on_ipfs` function with your Pinata API key and secret key. +You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variables. + +1. Create the contract metadata and add it to the contract with this code: + + ```smartpy + # Create the metadata big map based on the IPFS URI + contract_metadata = sp.scenario_utils.metadata_of_url(metadata_uri) + + # Update the scenario instance with the new metadata + contract.data.metadata = contract_metadata + ``` + +1. Run the `python fa2_fungible.py` command to compile and test your contract. +Now, SmartPy uploads the metadata as part of the compilation process. + +1. In your Pinata account, verify that the metadata file uploaded correctly. +By default, the file is named "No name set" and looks like this in your Pinata files: + + ![The uploaded file on Pinata](/img/tutorials/pinata-pinned-file.png) + + You can click this file to see it and verify that the name and description at the top of the file match the name and description of your contract. + The rest of the file is the code of off-chain views that the FA2 library adds automatically. + +TODO Link to completed contract + +Now when you deploy the completed contract, wallets and block explorers can show information about it. diff --git a/sidebars.js b/sidebars.js index 0ee16d5fb..814d98f74 100644 --- a/sidebars.js +++ b/sidebars.js @@ -318,6 +318,7 @@ const sidebars = { items: [ 'tutorials/smartpy-fa2-fungible/basic-fa2-token', 'tutorials/smartpy-fa2-fungible/minting-and-burning', + 'tutorials/smartpy-fa2-fungible/adding-metadata', ], }, 'tutorials/create-an-nft/nft-taquito', diff --git a/static/img/tutorials/pinata-pinned-file.png b/static/img/tutorials/pinata-pinned-file.png new file mode 100644 index 0000000000000000000000000000000000000000..f0efd5daae524c1b7989901fe030b502d00c36d7 GIT binary patch literal 30295 zcmeFYbzD^2_dg5+NDD|QIf#Tb(mjZh(jXuy-Q7JZAdS*JNOyOPlG5EJ-Q6|w8}IjX z@Aq@>)#rKseE#^&>viUA&e?12eb!!Uz29rkAy`R43KxqE3keAcS4R4U3KG&iR3s$i z`xy5SS0wYi50H>>#4RKwlw>3%fJ%;brWV#FNJ!Gbu^Q-_s@)`M+MlC982BKN?4~^a zrw1Te3|9Zs$5R+G{z}hrP>F>q@_xKgD)-0LC05?`pCS+nH9Wv(!s= zd7bz;Z9w5ESA&U88w>R)NPAB-SOz3{kiHYF$r--8d$jWT^P?9adV*t02k)n3+DSu@ zAe_MS?(Xh2i4;INZWVz9%cxln3=$3F>mQ?$XXEq1U|xUB&V<}5?7-`G4Nr`K>pE6s zzZWesQ16ZU(EfcL=fqWrneSELIB=ghTk^&8BD5oP8hu+lPTB6Lz;@m=H3O&~8&dtGm&yU|m{7!*z-Dw#(@!mZH$jp57?duJ}Rh_=edF&pJ7VtyyBP!6&JO$dMfrJHwyL?pFp#&v0)q+GHV+#lHqkjNf zyR*keKEU;mLsA6N-Uhj`6$wAI<1MOy`3>S#EIuMJZjB9d9-@8EYc7NHyr~{ z7a^BP8e**yzrM)F6Jr_Pl|i1q=Yues8}F&WJL_Q9_WK4KWvWwXyNnY^52rAT2&_6H zx(|o8Js<1qzF#n0Ju()jToSv*71h$BKS{An^-O7Dygo)7HC{CTIzX%#k1@)1{D`HF z7ULlW!Jq?b+jRFd8qzfE%cXa7aNGg;N824YTNpKxd-}tN5BZN%u|<%-in?81Q^N+P zIhH0eu)bck3Fl{lzAaT?Bm2^sAIguScYdXq`g+CRrrU>o2?pU~Jr<{s21Fa2KC(}h z`>Mu4*oQ&~!C^ru{3=*RV2v#F)wYb9+duOM5kEE?nEA)OI&=+1Qg`I*uR@29#PJ_I zf4TWl)bO3=%R>8DjwIJO> z-D1iQJr#ec-tnSCi%yzO>t&WomP$s2>RMfodaM~!dN-M|Tm^%`=RO8S26j3-I=)Zr z(T(5JpC%Dmh49fue3nU+(vrx}Ov#wbZBkZO=TSXV3V%&pFrcoR*`RUOWSP4y#ly-Y z#8Wea%9B6ypnA`eVSGQYIYTA?wVIgaGoJK@4{szyV7h`qbwFIGf&>o6u)!zcTJoq6rU&?F|e}dF||^&q?oA79xj!cq{x1hpO{&%>6E*U z)^E%DIWG1!ghank(<*erqPWXB%vQl{)Z_H(wD^?kl+ET#O*OBSkZR*AuUgk+*Yt?E zh){)h1Kg>ysYZg74GAT&Y*KvMZu$GZ^T`eAfsb&Fa0zj=xr=P4#@`;C1@2sJVV=sK zoo~($-DC|8;f)QB=$9-);9rsW%D6uACRmnz`w=F7V86Gd*XGeC7j!`FJBiOz#TCYx z^0uy{Y`kpo`xN7pv~|_QW|eYjc}aP?L(Y-x%1WmQy)z*-VMe!XG$H-qBS9Pz+T`-U z;nqzq9&TLD*d$wC8?HNRQyUVy*TywnyI_Hi6pJ*|mXW6Eroq;B!=jE?p>IMP*ckHe3M?4Zb5i$3>{|Cib19M?31-K7oXDWsTb{%7rEkC znWL*i&qfxz^_Ts=!$oGJMM8a^Az@?OXT&wf9>WU5(;>a&_|C#8lE<6JKE>lMdDxBr zTw3${ag;U%?fppAwk>QIyj0?u2RS4pPd69erEH`?HEk-T-LB>AclQT+LotQEH?U0>`a%@$?Frn!@Eo7D-nR5c>NEpB)2yn zZ`>N(u0u}Ka2CTt!t`jg>l7}TxSlu}t=|-VFWS>WnGT-za#V9val9W|^+M}QoX*Oe zMg5+kmqT!!QOHJ&y6W|lx1Vi1q!-$oI=yW!X&0HQKfxaFu^c|lW4YwudAkj^NE&@H z`X+Z)UZ49;>#fp~9oONbrbqo;@@50c(*mJ9RwvfRuG_oo0_#p88_xZ>X^loyCVCT1 zi=inYJ)sK&iYbd~)@s7Fmq+a1pkr})@zS!ktcP#P9B5jU>dI_}H(y$j`Y^A>>#;a7 z6*AsbB-CCmmuC9vp6q=6Tt#OiHy>xKDXByM#?`6*;FxkPX)RzaQX@=P8Tz@r!g+00 zJz7II&pv;uE~(;8LxYk0Wm0D~iB){@T?L!be7G#UM?^hPJ+xq zgj~$#fo(&xfV-1VwYp0O$#UE~R>fL+Ymp1`liDPkd$T1x9pcb)L6n1SKaoCEcfV5U#k(+ZygM66}hj%B5fz6}A6z_yR6-)V-j( zl}p8^XxrlEIk&aLI?QTg);f?PM(%umDlkz`xY0aF-TcF2>G0)xN1&W-{I<5PHs0O- z^-TtEZOwJ>emr@pyN-n=^{DS{!NIudB%ma=Hx~)TZtbZMaCdxa^2-V$g30NmogK zEzITddUS8jr-~tOqvzykuu<=$zV|-smFmf0K|C)z9&GJG!)mdvr9|Vi21+R@bl9)* zuDEx09hL_RI&fU@@zuW;hqpyU_C;=p()oIxdu)@A#PjIeKzV(zZ(RL=W(J_XSo<|7 z;9-&Z8#1KQS`?5x!2kZBSs*$6K ziLH~lo%5j~V?5#lroFV56A}^$-OmGAM&-#NLjR_(vCKE0M>V@=8DnJ4X{BFB=CN z$74|}AP^|*XlyE|@bFtF065|0wxW&kGYLBS#B+XA3)9;7`484eeZw$3i?H`_DVM-f|2yJ; zNoxMDBqtB|-$eiG);~qnolG1h>}(KYI*b1Adi`hI|GxPjL1FfvkN#h#_#Zp}aTQ@` zQ7mEhzZOjti$mb07GfPKEM6$8A;9l|FVv1ML}tGOfZ z&Z9R`s86H+xQIIiF=n7)phn?`WLzwSj%4v+>b_7;0zNiCR`xug%#udW#{94@MS%Y} zLl*PNDUmGT!<^lKj%&S0vgg5qPp5uGC6}4$hOik?B0R;ZV12()NmmmC9|-bCLI$Az zqXAZ6RieY+9NQ~&{O7IzbOw^*W7HA+L+npQAT$gNR3^wL^-sUh{j(DW>Kw{%6hi>0 zr~u-j?*-DonixVD6|n#3IRDhHgbV)Zq%>rW-y(|8*_`H6r@RS^{W5GOw_Hqb7(LAERoD8{ki(W&P{q z4z56SAxgGg4?^OClZM7tKmW@q|JER;2jYKJq3)f0shjyFyyexn4cDGoLP5F<{;w0E z8U%!f4v6-m(8oa9{!&oDR8VMDAvUg@TCAb2zA-y;e%ke$kx&I2Kxp>>HfYF;0Z7$6 z)yk^T&;74~kW9X;9opZ(feogb5^%^9UnxEkO)VY`sru79|CyPYn!erNNtiGwA=Ya3 zy+2#EZUsI>PV|Y=bTtH<{x<{AVK^^?ARmAbxk>4_{vJrOb*e-(zw8UHAlb|UgRI_y zl4v1p)DQBkNbY5IgIWLX;D6Z`@&Hv(3pn%!AKwFCNmrd%x6!qK11s-Cr@GW{&`Ak@ z^92|*i_p(lr#)#K;Cb`wl|=>+(+$Z0z!Rs2u5(LDfb5Hi8ptm+_A8>)OaD}?1Y{`U@) zhz2MQK-QvA;(My{&;YO`TW2%=8)lWG1_=XzYg+vqtN}|U%G$FgvOA^1zt)VOhXHyfs4C;JPKqD5$%q`t~5i#QzPPZR&n>99|M-{DiVTQl8Uh2r z&#C>_<&~$R1F^T$aEaBDaUU7~)=Onc87n~sDyRF?ji)nDWqv&YRE$*sjX6M&Pat#*)DRyeGF{DU zmAUBRv2pp3G!aip7Z;aGN8aDK7c#&GJ4PNDwG7r1@v7D(_tGZH%ikhd^gb~Oz4;wH z^x&IsfFM)okVIDp#g@O*QmB66)IFKnJV6`|Fs^`V_{C>Z(tppnJ z*Ed+GBP|4W^Azk*cgc(d#a}z!W;=kA3*S5j$2klH(eXmh@~W){0r$LC&I*^$G}sgh zNq#E_06!qFt-J@wzbJF_|DCRDir59R9j^ctTQNP!bP3!&Ye= zO*R>4L|!{B0a40WYEuYylbX}J+>ZWrED0upy0B4`J|K5D()Q6Pm7JhIfz|}#$lhT0 zVh`T2El{5gwrZsRI`s_&BPwM&UQ;b}z)1o6XBCF8cx&Gvd=xtFMgdU)@V4QQNSdfC_O15+M&$h zM>vnhri?6Giko4@bkyhL@#(7>U(M26l#e;FevLAqE)slEdaH(7ks{SVPBgs56S4Ex|AHhYCrFi#2ld3P6lKmzW5}};%n`MqeY#+3rZ{mocVyW+O&5o2C zz>AF{T9`?A<V3Se@k|M zEj+~gr*qZBf`HF~O3VFUejNmYkgu<>P~W6+*8PkCGPy*xx^gKmA3}_(_@+g=U!{t# zRoFknGModbt_zj{@Y755)wMM53n9VcmWLner>_z*(J8$EOL*f z!hXTXIF@*_z#KdF-`SLr`j2%&Y|VLtL6+A`ZTcaUHS;_zupHXMnDimT{Ds{6HQ<3-eNJYsjDlZ zzL7Swf;A~rzrs)pwNJ}Q=iwQjE)yD^w6rXx)78$Oq{TO%`P}mF(lF-zPiKDp0K<6! z1Qcmnbh_|a>1If?bmfbAfN`1()!%LD8Yur3xYOZ%w;p;5y1u(uh?JuC5H4w2PIBKH zp9p$ldH#MnFgsq0DMDa>@~VWH9V)ord;^<0@NYI6AJ+)xcD<`BUs=wM*9%rv6s6U> zJvfY0AgHdc<}^MKF{~bc9o#{p&$6E46yd(&XV-a1svpw0e=8+?`lGEs!s@ya-UR=~ zf0%pIMP^k(f)cMOEZKCYFy}p5?6B1lzkzq;Wo)!bZU3XCygP@yNCq>HDB(d~W5X*rhXzP6^ZvJYJ(uU&LCE0ns}9%pWh+cPRG_Ir3ox=pRyFxKgn zxiCnd;>*Z3ShA7owqWDDd&Z|5?Wh0vWOJfed;L%zhy2{IWp5=?Gy>%U?vZ)i@^6|{ zRr)o>iIuOP^zbNXP~k*Cum^L76+e#|gGd95JjrhY!Lk;bJ^2FisPFwi0Y= zvdxxbYDxI+SN%>DxOd)gO906}b#A(gBMw>Bi_E^5OLmE$hCWg^_2bSgKR0&$+dQTgzUF&_P6Iq%i$R3IT5X z*nYf@gLqNZ2o^3M>7>~0kG3h!WNE?i+_I+AnUjEV)AR!qnxO_O+cE1#+<$}^BI>y` zfB{G-@ed!2(&8}cTrsz?hsFo#zqx!a`N}oZsrEd3>HXEkA{=;qx2PJ1t<$%OH~aAPF~LHJbXS^`y+pAf`d*KIrhYh=bBb~JjXszk?YGk zn#PIN&z?*v-ZL`gFDJBVSTE+C{O0@?-`A^d2bVidyr(%sa=$x+o7mJ!Eilu@%86i( zI8G5jze_-zo4Y7ag1l!hF;`9&D6UBT{>`APLP1!_ul0BO9v#o7(hwn_#@z~$!?G5T z-^UmF@oO$y%vL9W3_84@Ey=M#fv@$A#+z6p_)jOp0~0Km@%eXBRE;v_dHW)THi}MG zins=B#?rQEE)Ep=*%srd{Bx-=vsrMd`*LY4?q7GaSI}4olHkePbu7B~x=bJPpNSy3 zUJkPz-TDQt-Hf)uu-OEKsFODIBgF_9;8#`44iYP^TS|=IdytD4TttGr-s=6wvBUwXM zMHRN0R8$tynWF=@auY_mio9wgy$-kKi+65LU8%K^D}MUanmX`F@|7tg-^EQg6{RS^ zdm@UesznMwc%ApZ_`UN(F!=p>NC!G@;@ioSOIoo=N2=%22zF7dEDMZMP-hcC?F@TF zVk9*w_JZvb&A;XU5UXo-X5Io#ylAfcwEcpCvCEq?>lQ&iice zuTNzj?*&nNs?9mf>h||kRnat`!P=qJ;rsKAYfcoqT&wRDzR4h96`{ivNa-FSH3>X%G;6P>xqhQ)D z`$zVc<8&-(hozPsn49!l+_b$4E-4r!fxGk1ganSDJ#4dql1F%YHVrRw8{lKSswvh^ zdjhGet{b@y?m<*y6IRMFFF`9{)EmWs>c0Tu^)D<_|kT5VwZ;^ z9#=ah%`_1=dv12=8|2VCD|q@YAyl}^_scZ*>8m7XH%GZP^b=BDdyACg_-h&mGOGAM zR9Oj>?6nVKDMT82dScTyZO;PEPLagq(~{{AQ|Y|&{JhR{eBY>uxXpSDdW+nRAG#@u zofYxJ=R!knu$Tv-m(HR%BZTk^<6HOIb@7*;v`~(Nug8n}JS~^Yp|?Y0mB2F&>E0aj zap-WmpT*&1!%nd(j==fCiNE{qa2NTmjfV>qQ4F&xxwZ!tF}>N=R=B+rAw0jw$$?=T0$YFODAlz5BO%4!iKc zfEfhyzL|dxj0&VBtLSRMRg5o9_v}ok?N^P83j}|)af7iYe>XYu_Im19O(M-L!YhyC zZOZFB+MuON&X%7m)zHbU_)P*&SZ6msswXQAs3?4=t1@?3H!+bsPz%I2m+x`?7sb56 z>kkTd2Tx-Q{dJU+q+m1%EPkk^CDh8i`Oea_f{h5K#X5 zrZDqQcas@{22_PzD!T$}cI=>zPrQS9Y5v9cyA01fkB1vnz=IJf}FBB=DU3#@L)jJB*L zRlbi!{^JQ=z$g}U_M5x9^K0glZoAR(n-e_A9$`1;UWBfss(D>-0U2OeLjYDKp_0{fOlxESO8Ilmr4T`)*|gyFxcq(9ONWCf!y4+Kng`|;q6kT~Ayz<*4| z6M>D;Z5sSkSCyrl+OOhbaG5MI`S?IEVprWo_-xncihQqF{x&&6u^B_f?p;-kpz?kd zDj;A{Ze_!+<|yuHBH3;Os(Wdb=CK};5jmgkmzoIvDtdz(+!k?Z0&65Mg}!XMJO9{9 z*Iza`rut+5=HTPidNNQ4w;>28`Vt5u^kodY3~;El_Y<`&igDd7Ka+9(y}n4Z{ePi>FeaKW&-y(>92h(|8>q;=7cZHgJR^v*TRw}R|mr% zfld;)`%_|_)ss4lr$c{KNr@(LA;F8@gi@48$q5`wjd~=t3l2ssoaP3;eVydDK=LPV#=qEM?X&;+b5bxGAeyg74ncQVxD9fp{d!Cuad~PA!*}guTjpdjQ6EUdVc4Cl zZgWu=h}Tzs?%fS>Yv_7e=&hd&iVad3>f=jLdp=42dcLFSmCCc?kH89_jcsxZ(RV24 zB8*f%t4FQ*Gq;E^HmDVG4PLxG|9*QLDRy1Te^Yc)x#Xz#k(&y}J8S#MYp>GmsMgFB zsHCn=>?g3+e)%mfc>|ihj#0POsaIn7R?_ zUS3?JuSlUh>?R0Osu-G(ubs8Aga#e+x&KL@^Q zKm?^Bf)Dk#MRO^NF_2SjFI_I~*u8)Uko2t^OtHFt52TRo-K(8{Bt>z(vs`YmR%HEn zC7gGfWAXfONa{o;TPlKrxVT?xXwyLd-+L#fAN@fF$3*~eH~AVJ!i*{h{@;4~{PKIaJ%Zn3n zoJO7PwnBKplX^bQ)sMq#*lTYq9QM)7)=!X$T$|u9^s71Kt&5S*3kzb0{_m4hofbSc zf_Gr9E?I*UainR~BwqV1c3EF@mnxPdceB~8+iy4Um* zK#&ne8p-d;4*HtF*=A@xfv{1WEH>(A`M1yJsumEos>wy4LpPB)Vu3!tgBxVoSa?`m z_Bt$G#dDL(=K0#~_$kT(qXqMe9Zm-YIr~${>Pg+<6qG<1(wMs;W*=bnlGFm3*`+X({3FQ*zj-Wu7%|Bi~Cs ztJ5@Jf_VVBkLN#?!vvFgS=WXBW;ACduvVp?Us|T!VuH_rK&ISe3FrDsq|qrudOHKP zuck`rS$_WON$ZwIUu>2rYQeXyAKVY--DZXRi+rwEClj#3`}Mw%r|Pbpz8R^uu28=l zYHmyO;azY)8{cx-t`JhhlDfuw$k8z=;@JMtI_qPpVTs3juwL^{x>K0`Uzx-S`Z%Y|MTxlqj( zO^X>ol^mm}Wg_vae3bAgb}9a)6wbY$8-ABNE;nW`s_d0C5m?vGSK)+*U-CE?E zoOWMHpuC=}K^$FBY2aNGSO^;wW^)NY|Vc zMTlt^+%x;RSjzjJ9W{%;KYpeta;}+az*v3L8p?{;cY4EwSMWwid3%`iG|g*yrxa>i zEdA0pJqcv+1JZ1GBrak4Q9}v`4e^gPNN~7*Jjyx}k{IgG*8=zEE&7Nx(iV?Sb`OOO zD&J3&RvtX$xJUk;)Ow|OcAkq&K5N*SIl8Imh3pq;nRRvUPY<3dXT2aZA+oqu|D2X+ zTWe!onb1*m&j{t7HSa9TJ#z9eWE9?eC#$#jQ;zG;)aJD>JoZoQ;}1Ulm?&OT8_(VL z6o5OyauGYNoO?Oia*k)iGv+jRk7s7>5=Cu%M%*^Rto^KaUO!mYd_uHqZIhDuT38Q4 zSGVy&NXV#v`vMCCxHkH^j1HiSdk%Lu2mM#l^&H> zu*QSqv9Wr2pM&N}7N27oRegQC7E!l>-Knal2s!Lo#>AbFVsjbT=ccNKHam56FUjh z_E}$*sWh8pgUT&$&?*YQy~cfLU_0MnGSPG#a&@%cZw|f5eZ{G2*6+Ajeb+lE#-~xL z!-?QE`@)`5UbQt1dpmkQCYd-O7~Fs?%)~s!H6x@S2S4WwpB^t!p=!xMwmVUujtA1t(pa5B0qe*a{;JeF@7FY@{uOOGPp z=pO7jGPqmS&xT(9PF+nr<1Ul(gr$8)4Fn+q2MXu1SP~+G!*oy)Z+;qkt54zn!zqwa zd(;djQ1B8s3F+$!y}b6`oa|-G31}4PO<_IEdwbrACsr4zdp5%6VqtD>FVZtUdedk% z*+)M+dfP?q7p9OYX~rYUj8V2$T-&!6N}6et{RZ)`gDF|>xO>xmXSjLz8YSWKRugq@ z?UT>iB7`5gnXSrPQ) z=cw;KX}>lq^?YxY8X`$xy;wKQcmV%6oH;Lemo0!%GgI}#!igX+w~p+DSZ#~*ekQXs43aF4j^Y2jd0a1>4?ASBrTjZDCGEM&3`FtC;NM`pzhuM`bvx zGwG1OcymfhqsacL^&BIb*KMuqGvnCTUNGO9w_1clmd_03WhvN~Fp$wiovCG`vw|ad zx{Do z!u`T+6a#E1iHVP2cQY8q{BO({z|6aVoeDV3eY;ukne=vDeqs3XZ5uq>uEjy%w%Vvp zFW>)se`YNrUDzlvk=rIoThvq)PSFy5Z8q=@&2+5JVf|J^KhbT$ch*MnS}yvb)iWbv zo_1z_h}9_1It2_&|>vqTB=Yc0VbAho<rLFJ3)+4E~LD=&C1alhgciXa*1mob&Mm<)6ZSeH1|JUzmPLlXP=A{z46 zJ~J)Y@kUO%A6)2J-OlEv3o2D6I#2*ocz2x?0;g{I@q-v(wWJbjX(|AIaX87ypz>2% zRA=>h=ztS`jflv;lDKRLbP0_LJ&8uYV zv8@}$>VC ztFEMle5sz^HQrcjRpzte26bu-KnB}aEZILWI2(hyFTI;x zyf}YNdo!bG0>*%iFs8Q0A#cTWNs3n8t#FKuzQmqvgCgKK-YzLKsoUDyJnPMJ8iLH!< z*>c))rbH|5Q2N>lp7ziYf~TypfcrAYXnTv}ZnVAwvNu%JbohFH-f2hxK!!qhT(tIW zX7%v%YfMaxtl8655&%FXzrX%(l<6l}LSg`1Hny;G-t5qx0aoq4`bsm^Lci?}Qe9cf zvv%K;3#i*oK=?`$$7_*l^|8xBNdsaYvKwKTY;|VZjAhlCI9jdhF8kWHzPDM05mYAM zYam5%4NC88S@m90B##jz!vl+Gm65yRs|LwEROg~~L20HWMe!4+l!~ieu`-W6tL#_l zLX%7@3SfQuY^rNvLkM5a|6fn$YSrc-{3O zzk3 zpf$?5=xmfO_RCDsIN|ezWWL981&|?Q1d{D*7GtYQ2RLaKRUX99GqUBJmJG*^oLBZvgOTG$?^kiBzE5q?U=<7t5n9wH1sSnFT}0;p z)kQ>eq1$STZfEX_Oxuag$D~mE$$i7cuDscABu^0{2xPXA# z(x07PJ?dh_>k9$BysO&FOB~V}5Bk6vD)`ciaae+(=-UE!08FyqGOzBb$x`AgVLg(cD!jK@YJL4hmpA-V4^DD{X^OmhW<7FEk+vDzEEQZ! zmOVMS1-h47LU6Cm#vih!zs3XTFUFBmJ;3At`-)~)DZl9mZU$QMNbA9%(((< zpPRLlyzYFxtUFeG98Ndifp<>ufJ2& zMAsI?2m&E7+_LOWz30ciUVAfnq)^W|u@=YdowvRS-dO3gBIyP*gsD&_K|yDQADqZ9 zJrU-3_?F@2zLnQ_&{{OD)U!bg$O^qevMKlTw)kW|+pK%Gx1vXbC1V+GtDhLs>~SwU za41oFhrsXL7K^=mIkM_L)vHlcV)> z_JwC1e6)tNnXJg?YJY~O5_UFuH~A_(wOC?M;~P?c_fR5&q;yz3SSRMSiP|1R9ZsTs zexjiR^_}mR`Ewsv=8y^e|_u$#|3&ljkoPngZ7H3{{CCyA~WXB$b&Z3RH zVX|Bs1G7@x!>rg(MqNo(t}2${I5NzvtgQQ#>Xyv%qIVMo>Xfc~+l|8+txS62hi+N+E{g`{V*6>NgRTV0+lWYCB9A#RE1JbaMu>kItV(#sh5%kwyHR2v zs|{=Zj{t3QLwMehs%#BhHIS*Cg z<^uOqN0mq?0DvI-k%bd%usQk!o?9Idf1jG)Ac9gbrp}1pEWmY$OQ-NuwEPp*(l=2c ze#vNKz7f&fu+V02yuSC_h53eYzy7P;?Z!{4TCskK|AE^2#@p*Ty-K4U{kYYLbib`! zvrIvCxB8d{n)jW?=ARFG*620BN~iv)Z;DEd06Ec8ws znGVj@ezCRPNKjgu1jVBeo-~i~XaAE@!>n>e+ko$xG|!Ir>V*Z>wfHDrfPl1?PIB-t zuh$2*sHg=O(~f3qtPq-FvYI@ZcVn}eW7&;6>}O{x)PEzHN=#tMWWC%)e`MP)OHXNA6==e=ywi!Kqh3{5m`P>w5T@N)mrd?Qord1D|lu`dU!kBfZ?*hA{jEg=- zozBIkcL7Q!Rf78uzEO*Z(S6Ql)X#urt8PBjVp>cK@nrb`AI=brSs8$%%ed=l>DEk+ zQijhhdGwfQ9n32U36GJkdA{;0@ul_=h3!`6R2TQ(p>JK4wqWrIxSbgfaVVehDyMqh zBNI%RPzC0`1Dx$N!Q8$q&~9seS(Hskf2OB@soNFyNNnM5;govf+Q-M?x~h<2j@_c3 z2s&D}&@z$N53^N2O@{Z7DgT||vP0ld-=Un%VYs%%hIzSpDHP|SznT^_QG@S#tfha-JkQmi3-2&l@deXsDS3& zhkii?+=CusKF>LRpFJgRqF01ucjhO6z>dK;)Fr*OO^7W&r}fot@5UFiX`V+fGw;p& z9JE-83OPJ}L(OJxzP!BFtIHlzneJ!1Fxw)MOEWV`Kt-rOVb52;k*vw!`-;wYGO9Vh zrYo48y6GZKz=XlCN8_}`;$sF`+2rjKp1`1A>uR^@%ke>|-y4Ri)Gtq6g20Y7R zv~TrMcXZZ{)bh znDIGey%>N0c*a8+5JV6FuuRY~XE;zE(;tS7)_l?yNsE2k(0!}lP)6WrB?pUZ1SjCRAce`r_Yu2+LkgU z>){WTORaIWalFP9)495EZE$wv-n?e_i4_rYYY=vlxoMxg>b$M;_xFqxyS-c)kf=X& zwVhrr5i9DN%y7}4ku=snrPjDBN=$E;*}+CLx-E~r%qO5@JIHK4aGk9yeVd|%n7dkf zt@)>&Sg6lR=jH^1LaJp>U&>a?4&}s0e=FXyFK%9W{XA2>Etx$s^(ONTO_}&3+ml{A zz9Ua24N487(n?FT&mt?tnMK6HiIgG}vmpMyir2;Y@z4@QFrIECY{j#Rk`r=vefQLy zfL-@4wR30mLI9gIN!h5YA-I)n9|zgjYP=vzS1ahhp`VA1V+;llyGxHtfd>^kJg}t( zCp}Oi%P5I)Oak$5iDFKh);06#U#LO&i;;zTK~}Vf&81 z&tv`_pY)>=?Xj1TYn{J%UGq@IJLJ&aGAW+#w(fT>7h0PSZ7#yEWRQ{3l;frh{8iAN zGFC`{v9$e~RtqH*WTm()uAMWzVt!W0-QGS&PO&>~^SP3ajOJMe(PSO5rcdQSAd%fO zUkV}T?`W@_BU=dcdu2pk6X9rD4ne<>b?bd=W-xsYVPV_3vi%Re{azPnRC34VJ zC~4z`cP%Bsm#>YfMAo(;6aht|)D2Qxlqw)f zK&b%*q!%fQQmjB|Dpgt%1wk;<5kW|l8d?yMDoq3wq=(*-8hQ`?8{Bo@buoVb2Cm7R zbMEu>=bkfJx59h`0Fa+_ycs>dy4{g&QG!vM{-imJpsw#k>l_rROtFW1{hmb9szIJrATJ>)4@z z>G!vqcDBd9Rr2Tsm}=joJ?+Bh<+_3AHT-X{W;B=!$2)VLv1T0MPP z{p$6OfTxLJ#%cwQ@3?Nf{g^CZQ2Ee+%BjHdq*!qAuFu(9{c;I}OR*hU&|tZRi(|<0 zMXUJx;TLR{_xxht%;xyRe%e?4Z&4|UZ!D3JQKLNj&XAaQiZ~xk_oefztRxL#&FQ6% zfT-}i@m-(T4Z%|yo>0#UP`>bFuSWw!^ffj>m3un7qA;7}R&o|Fz}%u!W=3he+8-0A z2p?D(?uMKZ{3W5R~~E)l2v$D2C|=QpdKr2g`pqqE_v>2f@UIxF%YULd z&Q{ZiMYJl!y9${j47e7&Z*M;1dimN?+aP$6v=g~(R>54a{rcF3#*xHfPU69&LyPE+ z8wthy52J8_Tah)2dzh>|(M?m#%p!U0a$D!v(sX_tRy%F&t7QsPq71V#_xQpUC0@?f z&MB6%tyAd@bi@Y73YvVsLSDW;0@;ag)%y7Ds_K7Rdz92^+Is*9m;wL{C+*g(vN+Va zw-Y;OX7Y`@)<(Jt2}Z_rLdp<)YY5LB~t_Ld=fQ?QjcNudZ|f) zM_PKmXSZNbc7r?Dkd$bh_KL9M2ZLcj742w8g;K;x?=^Iz2NPi;Qy(H+`npsPR=(yC z9BjOR9$E)omT6ol2#i zLY+UTCJh>J70>v@1jyP7Ez26od*E3PwI=r7ARgb<0yBEdK9mbyo-kdi>;+ zRO{WXo@Z7W@qN#^b~v3DNdqso8EtkbpuDSvbT=`1>mTS&c_ z@hyUH89LrhveXZrd@L2IX-dQ>gKN_jKGX8s1tr@|^>iG{4WCWZzbs$T#w=^$5%1pT zV_0!RR%Y-@Xabd?NoO=ZeiB|_q7J8a&g zCfB*=kop8J5oaa&!AM&51Z_zPe9I~+42baMHa%7so~-N@N}l@NNj}dW7Rc}2{^3w* zMt-<@%|Kl4#q|tt1or33FyStN9Fg|(hvIbaj>woQuo?a1)B@qC1|z};9BlY zdZR7)C{ej76(0N1`eB4XpzxG!&9ly(i{H`8^78DR?p+yarICxuue zAfr4U%lhnE^J_^*#2GBt!|*<3x-EcnwLbBzW!^gClH8qU3eNJD6J5gT(7B2@{Uhow zlhP@)8yU=ZthVEbW=5w~m0r3t2!lZCx{qA;chW?FGjYx+Oagi5m?BA0+qNh5J5~_vU-H=3#(SxBU{$TquIIc4k>_0}^h*0K z=lh}8;nBwOdsPV*mM`4_Q&UX=PaA>mXpt(kclGUB%9LRo{CfZUJDUCkDIEKiPfwb^ z)f9(v?ST6l$6TfiFz*NOXE7e^+z*H8*S6Zgh#9y;Z3ciSkYPU(FKTdK2-mVL;TJaE z5ROx0T=YOl5^v%eb?VNJ$7T_1Qk z%(>(;UFtUA!njfDUvSOp@|KtDmV1AiH`fj+G0p|S)G2vRBhL=j0+_D0D% ze+lE7h-;T_S}fbMFF=uZ32N;eV4!!B6@8*PAk4jaN#V8trqo*Py5Q;8i(_*LN1sEg z&bM)j876aika^YudZ$JIP3x;d-o`t_><%mKD^p9)qx8jnXnYCQ`07oslT&ksl(c3k zAU#f~;|04!CQ6i7t=)zHdI1!iotHOcfnHi_vilRg=6BAm^c!EWy@pXR1Dwo;*R4_ytcd(G@tD*rlaYk-jEGajs(52B zu5}Pd#yEkOP5jzeT9>5&?D<-n8)wn{3xv-N)*^wvYeIF_v0>J$k7yh~*672RASc64 z@?xKOq1hff);#|(m-Of&)yxMrcy_*cQlXvGs;zI}*g?H`#OP+n=NC{ZZ`~_7?f6^H zTufb72`q9~J(d&~dYv46mAz(t=eJCa2Vs=H%8kbXq$>jN=qk?id)KSI)<3nN3?Owk&+;;-n!d{Hv00(rK;3z3aJ5BKSS)s-PNs9DJ>|N$H zkL~BaB}$$c@>$74T`nAGYr2{$AuX5Hltc6!OL}p=D5|d~?%~Sc*O3uy|kx%tlfP1i|S(p<9A-nnoUM5AHH7lplW7neBz!3>EOON4V-#&4>ukMGw*O4I5GVG z+(=)MlP|2Z93Q`<_PqCA0uA8`{*6oNIHCZbheKIZ&83gJCjgi>t!9^M9HL9TVF5(` zg0b!4SJr^@0ccg3o72XfO!aRSLMqy#W0Pi&uk~5o?Nm1{dxx$e3dI={c++VO+loCm zT{{lSmEvdB5~v7z7`%j(&-Ly#FZ4Q)TT2Gnf6H&caZeT{Cx+pl-$OtN!o1iw5lR|d z1TGbHMa*L*%5Z@2BWJ?Bd$TSLLGqsfV^+rk^^k!WslcJ>B3=hLk^|0?87rmM97IEkS6P+*PszOpQgeaiv@W3sV0tH$B zRzXpQx4NXM#?n5wwo+qk3WG6r!6ogo<*S3f99OIxvo#?eg<1+Hp&vvDMBZl>fN1-q zWBgYkjs8?O6IU+Mp)I zxcU7gL{`=fS=O(NULW!T@pQdf!5lk3%!F1r*f!)wxLpMhw$9|+LEg0CKMX5u=V@#h z27Abld#NmG0exuo7*;L)LiZtM=YX+Xy~hu`tyvTcvkahz$C}d^K}h=Py_Sbt>mPM#E;?su80cxaDCRv#V$6|BYIxfGascO}8H1Iv zX#PyoSLVZ4oaf+DESws~cIAr+d(Y1muf2!|rNIoals+*}!Mm}u$Bu)gMy8@Za&HZZ zKA}Vpb2i#fJns#ZPMncF)j4&TlMoqh z0ci5sYwKNWo$7w#uM~N>l4-XW!UbZ#w5AlBZ^gK~k4K3%yN-%=Tr7h}8})m)4F$E^ z{%HyAhyQsKtvs*72U6|&uuOEx>?dj1=XN9$p0e9}ZgpApCDtTy0QT~o;&!F?VZ2@?gFB!Y`J z()r8civbwdxdtSxQ*gKS4_R8;kL48>TT3Hf3@fV2Gy>k1g08|_%q+Yr3rpt^yWSm} zJ&u>DG9c=#l6v~zvM{M@{XW~h*0h->-`+wH;rwYUe9VNUhb1#dvQ)dXqV@ts6K=D& zA77@1x&&z-agyhdADa67Ks1JW75QGhsO(gYNv#6lh8RxCXBM*9RX!~3-MBSl9XaWG zB5?I`$mAQYrw>|7gV#E-FUAD*)QMe~B%hKX2I1SHoc0MjMzQY{PcfJZ)<Z-yspB-$ zTI+)rg$0)zmd6i)N%~ahU80)lP?4?%=1B~-24R5X)IsmYWEe5VLZE{|klnU`J?ot< zW&Y$a&#Wq4YK6Ica=1Z+RyN-uNds5~4Rkpz_5O7m{}y7K0(`_(O~vzIbECKLRp=2P41DV=J9wV?Tbf#l z!G%!~jrxS@&3Spk4g*-wyS2ujNv*M>BRpxxZ;!y%T_~Cpm54+>H>xaa;hgMa3R0z> zkl!9&p1kLhdp&T##_*~g3JE*pi{B?xdY1v4C$mt%3GwJr9W__s>3WGoLe{739F?3PJ8;s~6#O5*D8mqVhyW2`4ty5>7?{^*4Rq z33J)z>_IoA z3Swj|u@j%QE2(#hX`rV5Nb5C_plA~Zq9`TN`+h?M+1*xR_2%giaDxPxiEiThP-%0a zeUq|M;46bFO4O^(k%OR<;45}cb4w}#~%ewFDlP0Gs&2$ zI2%=i>+jmI8Y4!AkKUKKPP0F-`763f05rveR1wU*sd?6hST-^AuD_%;PHtyytaGTW z(38FV<*z{g?%iL(n5e0p<5v&&Hpf`Mt`utyTwT4Eta}YJ;h7}vs6g)uaK{ ziYWmOy^sK|{V~D!SQW($1O`pF2!#UhN$BTi9P1f>NNuUN7P}PS(rrKYy;d&scAIfp zYU`>WTRNMr&TRO)F{JJn<+!~VgUABJ7;%k}#mYZG-8U$&+F%w9wKJ=J9@hH!c=sFe zwx~0LMG|cLZv5v76UTx0S)RJyhWsrBu>g*<$qM7Yp4az1@(1YP%V5bArGFm$UqKjj z0A#KpcH`Q+EaLyE~aSk{#^HRLv9;f?++3ZZNQfA3DZEtVy#lsmY|Hkm=)u0Z8SUJGf(%RbS z)5u5rO#9@lEV1>hD?wyor2w4=jk1HAMp?Bu3BWry zFo7Y`PO^nv$HG3-hW6$=F+RK(Y2xtU= z?dcLzkA+iY%^<*5MZz8eG}7ij)aaLqZFQ1Tl57RqQhdLN5dM-Ty&m8UMQ~F>z@8eE z9w5x}vpLN4#W)J&k>5hSC6JpCFYnq2+pe{JZpiK*@ALBkg;Q;9X$eE9<&kwpyn2PaxhAy;9^A zZxZAt!HW&j;0A@flN#6DK$D7CSW@x$#(cith;iz9R1TmkLKp8NtzXZ-(u3-kjz3omZmgEo5|OsHkGD!6to|{mDB67?j@dIt)hAKgMe+*v8j7Q$Oi@5}V*RAgzQVY!SIoQ$eWi6$}%Y$z4mz%xsc1gSLvAh_!AK25BDoFji*9nQ&St+U z;*oRviEQ)l-PgMYGGYPGGl_ZD`3%QD74h!#B0CLUy_X;(pp5%iFw02MWsblYxt?7J zCp(XB*3=dx5`nGCpGe^jEvmo->5{t_c!kjfTT2CcH0P!1Lkz`n)~+cz-TC)Cf5^o5 z|GgL0qoSnTMHaUQTFg&8k|j+Ik`;dnR6Kj?Yb3H}#-q-A402{}0+0U9Jc`t?v{WGO z9OujxvoxIMflbe$-#mH?1O+-Or~6v}9FTv%VLSWDs>@7IU>0?OY-led3VgA`KWqG2 zz30xe^U`10$w7jG9O2~+*}&SQ=_cKvA}dE#K(+4k@@Klkw{PAQAp5Kw;9D0>IJFB% z>}9)SzT{NyUI&m;MEJ&2D5-PcsLAOtwgAX&h`sgyvv1f35lR3W!KN?=0shkxTJsDNw=K6ufx&}Z z{{*c2CWEB~h9Hz*7-J)={y>qUT=pj^{b?{5BQQiN%Kxh Date: Fri, 19 Apr 2024 14:40:40 -0400 Subject: [PATCH 07/37] Adding a custom entrypoint --- .../customizing-operations.md | 166 ++++++++++++++++++ sidebars.js | 1 + 2 files changed, 167 insertions(+) create mode 100644 docs/tutorials/smartpy-fa2-fungible/customizing-operations.md diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md new file mode 100644 index 000000000..448f2b7c9 --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -0,0 +1,166 @@ +--- +title: "Part 4: Customizing operations" +authors: Tim McMackin +last_update: + date: 19 April 2024 +--- + +When you use the SmartPy FA2 library, you can't customize the FA2-required entrypoints directly. +These entrypoints should run according to the standard. + +However, you can customize the contract by adding your own entrypoints. +In this part, you add an entrypoint that allows users to exchange one token for another. +To convert one token into another, the entrypoint follows these general steps: + +1. Verify that the source and target tokens are defined. +1. Burn the source tokens by decreasing the amount in the ledger for the account or fail if the account doesn't have enough. +1. Mint the target tokens by increasing the amount in the ledger for the account. + +The burn and mint steps are straightforward as long as you understand how FA2 contracts store information in their ledger. +As described in [Part 1](./basic-fa2-token), the contract stores information about who owns tokens in a key-value store: + +- The key is a pair that contains the address of the owner and the ID of the token +- The value is the quantity of tokens + +In table format, the ledger might look like this after some mint and burn transactions: + +key | value +--- | --- +Alice, token ID 0 | 10 +Alice, token ID 1 | 2 +Alice, token ID 2 | 1 +Alice, token ID 4 | 5 +Bob, token ID 1 | 2 +Bob, token ID 2 | 8 +Bob, token ID 3 | 14 + +That means that to get the amount of the source token that an account has, you must put together a pair to use as the index. +For example, the code `(sp.sender, source_token_id)` creates a pair where the first item is the account that directly sent this transaction to the contract and the other is a variable that represents the ID of the token type. + +## Exchanging one token for another + +Follow these steps to create the `convert` entrypoint that exchanges one token for another: + +1. At the beginning of the module, after the `def my_module():` statement but before the `class` statement, add a type that represents the parameter for the entrypoint: + + ```smartpy + conversion_type: type = sp.record( + source_token_id = sp.nat, # The ID of the source token + target_token_id = sp.nat, # The ID of the target token + amount = sp.nat, # The number of source tokens to convert + ) + ``` + + You could structure this parameter differently, but this is a simple way to do it. + The parameter includes the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. + +1. After the `__init__()` function, add an entrypoint with the `@sp.entrypoint` annotation: + + ```smartpy + # Convert one token into another + @sp.entrypoint + def convert(self, conversion): + ``` + +1. Accept a parameter of the type you created in the first step and destructure it into individual variables: + + ```smartpy + sp.cast(conversion, conversion_type) + record(source_token_id, target_token_id, amount).match = conversion + ``` + +1. Add this code to verify that the contract's security policy allows transfers (which it does by default) and that the source and target token exist: + + ```smartpy + # Verify that transfers are allowed + assert self.private.policy.supports_transfer, "FA2_TX_DENIED" + # Verify that the source and target tokens exist + assert self.is_defined_(source_token_id), "FA2_TOKEN_UNDEFINED" + assert self.is_defined_(target_token_id), "FA2_TOKEN_UNDEFINED" + ``` + +1. Create a pair that represents the key for the source token type: + + ```smartpy + # Get a pair to represent the key for the ledger for the source tokens + from_source = (sp.sender, source_token_id) + ``` + + Note that this code uses `sp.sender` instead of `sp.source` to identify the account that sent the transaction. + The source is the account that initiated the original transaction that led to this entrypoint call, while the sender is the account that made the call that led directly to this entrypoint call. + Using sender here is important to prevent other contracts from accepting a transaction from an account and then sending other transactions impersonating that account. + For more information, see [Avoiding flaws](https://opentezos.com/smart-contracts/avoiding-flaws) on opentezos.com. + +1. Add this code to burn the source tokens: + + ```smartpy + # Burn the source tokens + self.data.ledger[from_source] = sp.as_nat( + self.data.ledger.get(from_source, default=0) - amount, + error="FA2_INSUFFICIENT_BALANCE", + ) + is_supply = sp.is_nat( + self.data.supply.get(source_token_id, default=0) - amount + ) + with sp.match(is_supply): + with sp.case.Some as supply: + self.data.supply[source_token_id] = supply + with None: + self.data.supply[source_token_id] = 0 + ``` + + This code uses the key from the previous step to subtract the tokens from the ledger entry. + Then it updates the contract storage with the total number of that type of token remaining. + +1. Add this code to create a pair that represents the key for the target token type: + + ```smartpy + # Get a pair to represent the key for the ledger for the target tokens + from_target = (sp.sender, target_token_id) + ``` + +1. Add this code to mint the target tokens: + + ```smartpy + # Mint the target tokens + is_target = self.data.ledger.get_opt(from_target) + with sp.match(is_target): + with sp.case.Some as target_amount: + self.data.ledger[from_target] = amount + target_amount + with None: + self.data.ledger[from_target] = amount + self.data.supply[target_token_id] += amount + ``` + + This code attempts to retrieve the record by the pair in the previous step. + If it exists, the code adds the number of tokens to the existing amount. + If not, it creates a new record in the ledger. + Finally, it increases the supply of that token. + +1. At the end of the file, add this test to verify that a user can convert their own tokens: + + ```smartpy + + + scenario.h2("Convert tokens") + + # Verify that you can convert your own tokens + contract.convert( + sp.record(source_token_id = 0, target_token_id = 1, amount = 2), + _sender=alice + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 8 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 5 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 12) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 16) + ``` + +That's all that's necessary to convert one fungible token into another. +if you wanted to extend this feature, you could implement an exchange rate, take a fee for converting tokens, or allow only certain accounts to convert tokens. + +If you want to, you can deploy this new contract to the mockup mode with the same commands as in [Part 1: Setting up a simple FA2 token](./basic-fa2-token) and try it out locally. +In the next section, you deploy it to a test network. diff --git a/sidebars.js b/sidebars.js index 814d98f74..a030778b8 100644 --- a/sidebars.js +++ b/sidebars.js @@ -319,6 +319,7 @@ const sidebars = { 'tutorials/smartpy-fa2-fungible/basic-fa2-token', 'tutorials/smartpy-fa2-fungible/minting-and-burning', 'tutorials/smartpy-fa2-fungible/adding-metadata', + 'tutorials/smartpy-fa2-fungible/customizing-operations', ], }, 'tutorials/create-an-nft/nft-taquito', From 66013dc6c6914053198490fd5a6602eef606bf9e Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 16:39:29 -0400 Subject: [PATCH 08/37] deploying the contract WIP --- .../deploying-contract.md | 68 +++++++++++++++++++ sidebars.js | 1 + 2 files changed, 69 insertions(+) create mode 100644 docs/tutorials/smartpy-fa2-fungible/deploying-contract.md diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md new file mode 100644 index 000000000..4c828e4b0 --- /dev/null +++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md @@ -0,0 +1,68 @@ +--- +title: "Part 5: Deploying the contract" +authors: Tim McMackin +last_update: + date: 19 April 2024 +--- + +So far you have tried the token in a local sandbox. +To test it on a live network, you can use the Ghostnet test network. + +## Configuring the Octez client for Ghostnet + +Follow these steps to set up your installation of the Octez client to work with Ghostnet: + +1. Go to https://teztnets.com/ghostnet-about and copy the URL of a public RPC node for Ghostnet, such as https://rpc.ghostnet.teztnets.com. + +1. Use that URL to configure the Octez client in this command: + + ```bash + octez-client -E https://rpc.ghostnet.teztnets.com config update + ``` + +1. If you don't have an account on Ghostnet, create or import one with the instructions in [Creating accounts](../../developing/octez-client/accounts). + +1. Use the [Ghostnet faucet](https://faucet.ghostnet.teztnets.com/) to get some tez for the account. + +## Setting the admin account in the contract + +Currently, the admin account in the contract is an automatically-generated account. +Follow these steps to use your account as the admin account instead: + +1. Compile the contract with the `python` command as you did in previous steps. + +1. Get the address of your account by running this command: + + ```bash + octez-client list known addresses + ``` + +1. Update the `step_003_cont_0_storage.tz` file so your address is the first address listed, which is the admin account. + +1. Deploy the contract to Ghostnet by passing your account alias, the compiled contract, and initial storage value to the `originate contract` command. +For example, if your compiled files are in the `fa2_lib_fungible` folder, the command looks like this: + + ```bash + octez-client originate contract smartpy_fa2_fungible \ + transferring 0 from my_account \ + running fa2_lib_fungible/step_003_cont_0_contract.tz \ + --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 3 --force + ``` + +1. Copy the address of the contract from the output of the command. +The contract address starts with `KT1`. + +1. Look up the contract on the block explorer [Better Call Dev](https://better-call.dev/) + + Note that the block explorer recognizes that the contract is FA2-compliant and shows an FA2 icon at the top of the page. + The block explorer also shows information about the tokens on the Tokens tab. + +1. Mint some tokens and send them to your account from the Interact tab. + +TODO more detail and screencaps + +## Interact with the token in a wallet + +TODO + +1. \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index a030778b8..f3d95337a 100644 --- a/sidebars.js +++ b/sidebars.js @@ -320,6 +320,7 @@ const sidebars = { 'tutorials/smartpy-fa2-fungible/minting-and-burning', 'tutorials/smartpy-fa2-fungible/adding-metadata', 'tutorials/smartpy-fa2-fungible/customizing-operations', + 'tutorials/smartpy-fa2-fungible/deploying-contract', ], }, 'tutorials/create-an-nft/nft-taquito', From c657fc9432a29a674dcb9c40d34cf74f72abc3e8 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 16:39:45 -0400 Subject: [PATCH 09/37] some fixes --- .../smartpy-fa2-fungible/basic-fa2-token.md | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index a1a3cc0f4..46f846b9e 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -340,10 +340,36 @@ Follow these steps to add tests to the contract: ) scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 10) scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 10) + + # Alice sends 4 of token 0 to Bob + contract.transfer( + [ + sp.record( + from_=alice.address, + txs=[sp.record(to_=bob.address, amount=4, token_id=0)], + ), + ], + _sender=alice, + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 6 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=0)) == 4 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 3 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=bob.address, token_id=1)) == 7 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 10) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 10) ``` This code calls the transfer entrypoint, passes the transfer information, and adds the `_sender=bob` parameter to indicate that the transfer came from Bob's account. Then it calls the contract's views again to verify that the tokens were transferred and that the total supply of tokens remains the same. + Then it tries again from Alice's account. 1. Test an entrypoint call that should fail by adding this code: @@ -463,7 +489,7 @@ Follow these steps to set up the Octez client mockup mode and deploy the contrac mockup-client originate contract smartpy_fa2_fungible \ transferring 0 from bootstrap1 \ running fa2_lib_fungible/step_003_cont_0_contract.tz \ - --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 2 --force + --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 3 --force ``` If you see errors that refer to unexpected characters, make sure the paths to the files are correct and that you changed only the content of addresses inside quotes in the storage file. From 0e1ac14a5b9b52c34c2e03581cc2f4f6cc918543 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 19 Apr 2024 16:46:07 -0400 Subject: [PATCH 10/37] Temp links to completed contracts --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 6 +++++- docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md | 4 ++-- .../smartpy-fa2-fungible/customizing-operations.md | 4 ++++ docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md | 4 ++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index 52b8d1108..af6a37ec9 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -18,6 +18,10 @@ This protocol stores files in a decentralized network and indexes them by their TODO mention token meta, error message meta? +## Tutorial contract + +The completed contract that you create in this part is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_3_complete.py). + ## Getting a Pinata API key SmartPy test scenarios can upload files to IPFS with [Pinata](https://www.pinata.cloud/), so to follow this part of the tutorial, you need a free account on https://www.pinata.cloud and an API key. @@ -122,6 +126,6 @@ By default, the file is named "No name set" and looks like this in your Pinata f You can click this file to see it and verify that the name and description at the top of the file match the name and description of your contract. The rest of the file is the code of off-chain views that the FA2 library adds automatically. -TODO Link to completed contract +The completed contract is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_3_complete.py). Now when you deploy the completed contract, wallets and block explorers can show information about it. diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 46f846b9e..1acbb5e5c 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -18,7 +18,7 @@ To run this part of the tutorial, makes sure that you have the following tools i ## Tutorial contract -TODO link to completed contract +The completed contract that you create in this part is at [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_1_complete.py). ## Using the library to create a contract @@ -420,7 +420,7 @@ In the next section, you deploy the contract to a local Tezos sandbox. If the `python` command shows any errors, make sure that your contract matches the example. In particular, check your indentation, because indentation is significant in Python and SmartPy. -You can compare your contract with the completed contract here: TODO link to completed contract. +You can compare your contract with the completed contract here: [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_1_complete.py). TODO more troubleshooting diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 448f2b7c9..4b5aa1262 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -37,6 +37,10 @@ Bob, token ID 3 | 14 That means that to get the amount of the source token that an account has, you must put together a pair to use as the index. For example, the code `(sp.sender, source_token_id)` creates a pair where the first item is the account that directly sent this transaction to the contract and the other is a variable that represents the ID of the token type. +## Tutorial contract + +The completed contract that you create in this part is at [part_4_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_4_complete.py). + ## Exchanging one token for another Follow these steps to create the `convert` entrypoint that exchanges one token for another: diff --git a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md index be45f6368..991620f9a 100644 --- a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md +++ b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md @@ -12,7 +12,7 @@ Mixins are modular classes that add specific pieces of functionality. ## Tutorial contract -TODO link to completed contract +The completed contract that you create in this part is at [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_2_complete.py). ## Adding the admin, mint, and burn entrypoints @@ -153,7 +153,7 @@ Only the admin account can mint tokens, but anyone can burn their own tokens. ``` 1. Run the `python fa2_fungible.py` command to compile and test your contract. -If you see any errors, make sure that your code matches the code above or compare with the completed contract here: TODO completed contract. +If you see any errors, make sure that your code matches the code above or compare with the completed contract here: [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_2_complete.py). Note that there are many more output files in the `fa2_lib_fungible` folder. The SmartPy compiler creates output files for each call to an entrypoint in the test scenario. From 0a2d7ba4f9df90a5a62d399929c2efe8fd997286 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 09:45:11 -0400 Subject: [PATCH 11/37] Add instructions for adding the custom token to Temple --- .../deploying-contract.md | 39 ++++++++++++++++-- .../img/tutorials/fa2-fungible-in-temple.png | Bin 0 -> 50534 bytes .../fa2-fungible-temple-add-asset.png | Bin 0 -> 73530 bytes .../fa2-fungible-temple-adding-token.png | Bin 0 -> 142670 bytes .../fa2-fungible-temple-assets-list.png | Bin 0 -> 103821 bytes .../fa2-fungible-temple-manage-assets.png | Bin 0 -> 48641 bytes 6 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 static/img/tutorials/fa2-fungible-in-temple.png create mode 100644 static/img/tutorials/fa2-fungible-temple-add-asset.png create mode 100644 static/img/tutorials/fa2-fungible-temple-adding-token.png create mode 100644 static/img/tutorials/fa2-fungible-temple-assets-list.png create mode 100644 static/img/tutorials/fa2-fungible-temple-manage-assets.png diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md index 4c828e4b0..f558c602b 100644 --- a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md +++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md @@ -2,7 +2,7 @@ title: "Part 5: Deploying the contract" authors: Tim McMackin last_update: - date: 19 April 2024 + date: 22 April 2024 --- So far you have tried the token in a local sandbox. @@ -63,6 +63,39 @@ TODO more detail and screencaps ## Interact with the token in a wallet -TODO +Because the token is FA2-compliant, wallet applications can work with it directly. +However, you must add the token contract to your wallet for it to recognize the token. + +The process for adding a token contract to a wallet depends on the wallet application. +Here are steps for the Temple wallet: + +1. Copy the address of the contract. + +1. Open the Temple wallet and sign in. + +1. Under the list of tokens, click **Manage assets list**: + + Opening the asset list filter + +1. From the popup window, click **Manage**: + + The Manage button in the popup window + +1. Click **Add Asset**: + + Adding an asset to the tokens list + +1. In the window that opens add information about the token, including the contract address, the token ID (such as 0 or 1), and the the symbol for the token, such as `TOK0`: + + Adding information about the token + +1. Click **Add Asset**. + +Now the token appears in your wallet just like any other token: + +The new token in the Temple wallet + +From here, you can run transactions on the token, such as sending it to a different account. + +## Next steps -1. \ No newline at end of file diff --git a/static/img/tutorials/fa2-fungible-in-temple.png b/static/img/tutorials/fa2-fungible-in-temple.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bcd35f2af0f3e4629bc1930a1bbfdd5f89105d GIT binary patch literal 50534 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

Szn zG6uFrW-@A-NZ6rGtCljz4B%vp6Av^>y!|q`rcNR@%*a*^ErwMV`pLQbEemmoQ2>?r zy{h?I!E&Dz_NNTpUvRuhN7bja&of1H%NY(Iz^zbFJ`GJ+FnX~#flx8OXLGUKcGx3T zLqa64Xk2hB-I!Oi;PKRYu`a8^K%C_7gYsKuCvrScIG>y=)@qbu>yR%|zu8SrgMV^5 zfJp0d9k4^4k+>Z$5of-Kz=BNzj{y*&fRa9Kf)&>d#f#4S0NeFJi-2y>^1$R2QyE}v+ z!M!1Pa1ZW~1P#`>yIbSXc%SCoJ9+ni@!y==^NrDC!5H0Zt*Tiy^_g=P@f#F&7VKzl zx7koF+;7%lx(K9m%qP24bA;4!;5DTFukh@g12EIgfVFV^S3Mj$A}8VawSkw|7#-rZ z75$|vUbuD#DGB{*(C09`s_?0IJ}4roWtuh29|jdAFT!5s;1b=RU))r>diu50k8#ZK z6WL=?Cjg7z;1ai$??zU`B#3qiHXnDBbbfYl*rIo0Q1#mt>T;D{wwy-Wl{`9XwyC9_ zx9r-}i!7g9-rR+c*c(?4@4u5q>Y`e2%pSM~!$~v&Ze0qjHzb9`2twqGKCM zcV3|Rkn8UvW;Ud{W?z)N%k&1Ts&kb~26C}=jbx$*qxN~qbKzDgS9*dGC#AVi7itR* zVW4I(gkX)q{ERr}-bM8vzp4Wus4IzfeBnFczB(@4`uZ{%t<3aq@u>!DpLl zP=7~W>HT;vhV0t&F-!^UpW*mUxhR$y=p<@%%6d5>+n(6UtZylYHboA*FcAo8s=d_) zb;UQ@a7s^lNhSHia3Qm>rUKocrP@a$4aA=b*>lIG&uLeGU>zT{P4~mpkX5OwtXLAB zJi*yO4VEK;ZHn$Y3EBwQR)R&U{DMvAIjc@SNWyigVFX|IHgjANixGEoWeIC*DNn*u zgc&})`&d4wKZ?A$AT6T(-A`(Fr1%S$8`-r(;8#Q)EyYmo(8+*)Uxa5i2Z%a{>7Az0 z<%XR|>9@U=EQEby(dS}MirSGHCla=MV<_1AcGxE0rC<@)xWa1Q^!k)d7LL9&bVBAl zF$lwL;3*D0DU@NQm#gChWUf)w?VTq~ucFCSyGddT+oQa&aWUb;F|ag)bF53-O2J9U zpnZ+Hl%Oz|kxyImiB?OoTiw;Je8v^=ysYZ*(G6>?A$){@A(LCB>=$z{N%_hv+8Pz> zkf-KjH(usAiLzK>#fk~%^->>xR}gfz0IBXF#%px3<){$O)L1W>Upka^s4$eUdmnz~ zt32kIrqE%<3By!wz-=#%O(*#*>Z&DQm)_(tQF(cp^J1_Ge)e1M?{Iq;a=zE#BpGsL zLSYj7X`H-vorlxUJEYI6tt;?ssj3Ax=cDyB^hh{m&8Q{bOPQb?i+iGq22^~V(o!~h zpCy=s0ZTmX#X-OQ2v1x@1~)+nc!C3A04mG^0KSW{P;M@8=(xRi+=yv`VW+|52@W!4 zjxq0;=x+Hvzm2^MCoacFf!Xu@8eHQ`ZQmaapLbKu2ky$2X^*jDrdRRey!fu{CAH=y zwQLNCti84dEjVSM8>*u4b{hh>n%geB_K4eB?yybE$U^Z6u2km;BEjm@9oPuOm)MLB zLWF9+)n~Tx@$9O?ASZ7v%Bq8R2>FzkrD{$5dd}jEBS7M%-p+xy({ZRpg42GxK3BPU z`!2xUQ*-82(e>K!ba>@$F#j!LE|^_Xd1uxCX=vELSG1po8hx18?Il*nN--U zf#!e8f}h3|FD{H`8H};KfwMi@LyKl$;2s zEIE0$46nv1U}c}iD>ZgRJubvvHH=U5gMGrE%G}2UIs1wL_@jMcT%fmq0Fw_fFw7U2 z_Y-4X6}Favy-ZKm-ansHMOYBNqc8iPi`G9b^3xYM|3Si&^O*2Qw=CayG5)zBFo`wnw5L6ZvRlzwlmGp@thKs4 zu>14p4d+u~)ISk;I8?;=UoAG~%N*$C+ z9p`ou?rojLKE*ZhI$EhSmAKZ?gVP$(H9mrVzJ^O40Jt0)P|ba7+*Fke{YD-BZBO#MN^8%P5iQQ zHwSGzbMdp99&k?4zmS-Ao(Qlyng-U*~jM1V!YAabU7>F*M!$3 zdl?@rN!acGg8fo~KY|Wv5)#uvlWw>lsiKRbU>Ksz>sIwo&Mf6`aVesy$gaNpd3abL zE=ZfdAVv2i`aq)_H0#qcUW`AwYa8<(yVe5wlJy%br{{k3{)acI^wGZzzz5HN5qC^t zM1}+6Db-9-Pqqh2Bd9RvaByF*zFJ0M#{U(U`7E;hO;2X;Pw2mk4@=3LGOETmT?jPl zkr*2MMpK3HvClG5g*69LjjMXJt82qV z`W#X`qU8~lYAgFcKmLe9-60?+GA14VJb{SXG>IAGxg@9mes@M-Om^;C@?WaLVti6G zu*3*Ua)Q6qdzu-wH4LMZ0grw+`NL~ZEIK9&<4;nV5WiP{F*_Ke>%tgaMTq;5_+K`P z6X%8jb}_vwM%jPq1pDW|jEE^D{YMr&ad$KuW`aFDsQ9UELA_*G%)eXs z|Nl_`x1$7;wb1YXpPS;u>z)wEl=zQg|2r1rPvUROG%F&$@;b<4yDDH13H@(B2plWe zq~a;zv$Fr7mQO?}d`ecCbgZuZU!ugra&{^9a93~sH-p7E0w!`4Fo}fz!o*KA{lAC) zA5H(iw57=85X#)ilS`Pf25MNt%yxeIGBU74n0k2HzX%sVAb5e7@1FeHYK2vjjf3*H7sM0VX5NSb=aN zAow4~DlbqH;6%nGKAG^qz7EID3Dn$$P_iUx=%Je~#URYJwSI6vWKR-7M%((a_DUc_ z@Ab`1&qiX>>x7g9Y7#3{RT>(VeRaj8P#(MjolLaxQh%fpLs|~wXTR~nvf+%gsP6n- zuF1?JVFN8d5q6i5?3Dt3`$h32N#9emA-Vbo^_LTPo!#vV>ooBKcp1mYv260YU4h$j z<9TK^7j}s(asd#Q zHdq^-ZkixiL~YIP(MU5UDlHw4SJ@?p3g5F3w4cnhbE#OMCHTP;mnC3I$R@Rv?bE&2 z{`IRsd=ILn*;gHGU$uPnQ8pQ4=cv#LtmP-@FuRus4T^mu{hiez#jXg@_lM+O9`BU4y_J@P>LWTw6G0uv#tg@%Is*FNsOF!Z;7 zafRr)pJIg`4{(2~^trkiJ-t@pa0YWapF^U7&(-_Pd7jJqMio1aimz)PdV`O!<{Mb% zcLtP5K9EDEFJIy@(^+Q_ZX+3Gw$iNx5(+*m8a26ooZ zYvEGDOaK&`AY})8lHTcAeAI9jg9cSfzkOPrcJp@hKC>=R;@we4&!uQ;^t(uC5|N>o z%*noKG#O7EJ!OYpi~G^4>#Wntz|_GeRje>G&X&8pW^6q&<}Q6~8Sey>Mh(?8g6nEr z|wUaEONDS|UU{TN%b z2?VZaUnx`sitMv-GRVuup@T#gG~DLS2x@$L-p}|1@IKEP1z1m)=SJGkHp%&CcmBw> zE*QWN^@=k!RcEXh8>PS>4SHeX^#Uatro=4owOc>KwdFb7LuhWUYmf84j~bwVX3FWj zwXYL~jOz_-9EuR)zdajY+Zi-yG+>wOf4kaaK71p2za4)1I{6RqBCugD}1jxv=~REiU^=IO@taW*}gmrOYR&SYGx zTQc6^Z>1bElUN*#2Q-y441yH#Qjn@A6!NIa^MrW&U~dhwUD$cRx_eAhXlhPBC@qA! zpl<=iu$!=SKw|z*DS%ww+zgQ0x(Qi{+?VmzcV<@VA{wPyN(mImXQt7l$2>x@@27DI z__m99sxq0t`vkFLS%xBudx>oC9@0m5IFr*lR zbQW~EZ1s%q72l$Fr?Y+X{d5=Ea;=QT-c(+s?OcmNAt-}Bo!7xl1N7k~1Hkv9WwJ`E zuO8GA#qqGwLu$YAn}G!@(V@1QkG zJO$o1@FBNAt;J^h*w#C7D6dl#x6SzL&0I8TaSQcQY6rt5h3vc4F$AyGvgjJ!Znnoi>>IiRTO(|57U*#LpZYtELX6GK_C38r#M|#`6Z*bRp97%F zy1>#l8fBO3QbPT zOf0P)FJ#lsEV)*};?=+Fpl@=$%GhdBouYT^ zWM@4ydHQ#it@|%-764Ul?bxmxV*wqn#iFu`%Oo~q$Zq06aVQy74{xSh%(%QD!#hZq z73S<=HeTmjMdk1G7e2cFq~&W`hH`JaG?G1=31V1eAVRp^qQV;7ZKn0`QR$zv0FE3b zzw*c+n)A%MK_@EVFAXlZ6|_2IKO3_E>^?l)UB&C!H&v>W9P;mV^?hHQ>HlE6vJykuN2XS?UWSq0}=!XbcKs^t!U+9p`k*r ze*@~#22A!qb|MO+@3#qCvk|B(CQr6**?KCX<7%v=e4)nc+^-@MQ6QTjWi z_3|-Md7mBnI74G^c49tIHz)Y|7rEzt_1$LqgffSNLDe;xPt}>K@}pbJGV++9(ImaU zmyJO*`NC|SS$c-pJv&=0#EuWZ8qmD0>Qk+H9A@C2$Sm4w6zqLA)(XAiKRv1N5W~Ia zx|-^9K%rxr$E18nhhF6@NAn*GsQIgR+Dvz{T#=5Qixwhr6N-CnA9U4-Z#lDJPit(& zJ@)ljsWeg#B4_*3#R}ilNk{STK!u^@%8Q!teh*Vx19{lX$F)jtkf;x#$EN}NrI`CO ziE>Q7G$Kn6_WY^tD)i(Cq+riMda$CnmL}y$0Hy=WlzKRv?O6>A*i70I(Kj7uO8fcE zKAv?8;#F%W*cIJvlzr*|a1M zV7jVM{Nxw!(eLB{-*y!Tp$8A|qEhDqQlZ(GTc>@V8|E8(RFMwPGxt;df@1Puc^{3~ zeroFkTwpKndbC}lspwUz{m@b3U)rSV$|>kR>NC0TW;+2PZi~>VLRCKb!k8+pe_AOn z62YVF0{qio@;z*!HE%~m>ZiT=^)d%Wr5&@2rr#~-spNd%qGQBwpv3matFW^bs9z;E z4dpHH6d+e<=RX2?^v*`h)XyK}R{eI-=K$R)5zwi2j@Eacs;Jz6thhw#d!Kq$LLTjf z?>8gQHd5tU_;0xgmv^{#=ran3hu^zqiyZ2nYd(5!XgF`U0h^Z>_+luB#bMuvZ*4pty^kH_4C_&Hpd6X z)hq0YSqUo;ydOfNoo~Im5INMFOdjroJ&-8R9CexyU6uTEU#O;=hDj<}IUwA^91p}u z`5)$$BPlZh^RUw{hTR%eIO?#o)Bp*SRF$m)V|%n5eN*G>^^3TArNx(HD;*F zc=NG$Y{ZaNt3{lQB(;36)!t*U zt9_gOokcz^`?ZY!GMXvIZ~0bIH=Kz+aq;oDch$0I9l3%x$VS2}Y zP8)|;*yZyZ#Rk8kjNG?xqn2DBw)Rnvlea52%BIj4JM5Tm4uiEQ z2EFFLG@YDl^nXs%_F5R8VK_cVQSLFg1J9g2>aoj0Dk%*5GI`6}<{NETvmcI=ReP5G zkJY@+JE;yHL|WVuAnLNR<=P5pmMpCgC-h+#&I{EDf^q)FX(#km#pOU`?0iF=w2 zLi%o0>hqf#zxWl^f#MF3r>AG2KPL@1<$5TEbaH+TmS7&9YyHqvETd*On3h_t&@ZD) z7rD3l0^!1!I5@tkc);HB-SMcRBZ9D9iFQ6tz;MaioO-K9aHw_7jv5iqI3IT>v(f$d z_4rHSlOf5tu8!1pna2-X)XqlP!;7pPbV<(zW6W4{#Tkn+Us|yUHkwRm73s zM{PaO;$Xpx+(+mkmTZ5t$aX3nd9wz-x0$g^LT7Iu(?F!u^R$otd5(cyS6wCMClAZG zwq6$O(3PaY>E$pR=Zo1A2K(+-@0bo^lk#|__E-U0WU>1nPPAF6kwCi|jk4p( zN&}^}e{HunJ8$F|8{J)Ih;W|8`k9AcmeIp6)#{iv+gP4b6&-JblO3kS98yve7@+Ny z{2hm&3YpF9yo@e57@K5`kc0=e>xVd}YTJ7D;WDG6zZ-q-?C*k^n{k{LNwzoZ6y9~P zY;cfz*`0x0)nuhQV)@X$8a_a6%opwy?wo3LHq;Y6C7@a-L#oWurjxUwJ&i!>_b!yU z`=ASl^fOMbcr=3G2V<6F_8>=;-GyT>sY0dfJmo#*rk`3XF)2ma0mD;0MmyPz*kUKJ zj{Bd3sad*bFS0u!jOH>WqmeS|D52FlosX*!2P(QlOtnuPC$r^83l7bim7TXQCX!~f z@+(>o=My@_Zu;AuN78~trX_~1N-PYSd^8%cO~j%f6$(l#V7kk~ ze1I&LQ72(a1k$~G!}gkzqqAM4yUlYQA7QtZ4SzJtSW8c8DFj&01NP3xj{D<{Dt(cg zwK7P)+{W`t$Q7nSOxJ4xlcG$)4_Q8?p1;Vi+V6f6oxyTWcDuq$vK|%~+QHyXE3WMU zI}fo#CeE`#j|W2y+{n79^y{)p^yBlUcq&1*fpzP}8u-|g-xm7o5murbbrNSoc(iMb zDc`(Z*4E9OFEKq@!HOPi_t(Ok^J_@Q$2w(RM2{g?|6QyYm5S&M0M?o-hWtrTmo0#}(Z9hFfz1+G;tp z<6EJIEV+e&yno`O00ToEyG+H~?B{@G^iFAx7|IB@OgzoD#a~UI-!0G|xOEr+W*m1$ zTgJD05a=a9Wo ztcTvUPVv4m6w6I?ND3IS1V^UCh3uU7%V-iu)$Rl|X33H|c_m#8nG#tM-p=xjXAu#m z*1?Q3-^s6`%l;~*8mw7m#^CdFsF$AT!@AD_n}AA>d1oP^1jp5+OVz;4O7xgRJUz)8 zeuwScnTGQmPh)FD`@??ic#)RYjE^!I3VrkLS-SqRMgEWAK0cgUbAAbt^6l^_I(NyD z{R4-a*26iyvqnTSQ9mfb-e^a?-YFh3HeR?(Sifr;h{xvyqn!}C!1`o zXI53{`0|YbcAT1 z#Q71qm23#wJ+X5=nspmmvUO!?X=n_#hx8cm=pOdZE;Ln~2F#P&bAy!=0v^t(iVMLV zVOc3(5{q{2Hq{^Z6Zv8(PVYa-1@0L7wwL`lR~C6KsYJ2reQed`&F1O-ayl~w5d!m0 zU;e6U-=q93_(2#Mk2pHc z+4i0H&vZ<(M%n27sZFJNYZ^Kk(ymY3cpAFD`m!ElnZcBt*}m5!@}FRly1G=HQSH}T zD>RW*ccJKnDdQcg4=$Xazp&_QWq9}OdA`0{a`WFL)cZmR-~MsTxcOuE*1o)Y@w@ZX z;|{dJh~TVVt_%dyohFGd>k@rZr(8@z&s0-j(hp_j2aO*w-Lerv7JIN3-m;?Um!_*F zo|v9z1couu#hF1U+BUX_WlU6cI(8r?%lPe)Ll427S8n9ZInhYY{%Z8I=SFYo-|~M% z5erIfT$r#P|A-fsOrkR4%@wS`SOr*8AJ^!xElP5mo^%g4Y4l#I*uijxxm(hP`^Nz* zHg*GcJ{!yAI<2*vwS?h;(u)wE86uzkcxT)_vS&PKyW(G}+d2_{(dN9orSv*O(h?Lp zxZzM4DW^km@>*Hq8@wPnH=Q49Zkatn2c;k%w+?G;H3OHEKpnRdomB>9p$hk>YBLHa}XD&0U6&AYk2mKu6p1=1)l+!>2ZyIrN0y4qt)4m_W8Up+MVLOF37C&xb4_!#>g{4gf-C)%?Lgv z+dr*v<<%mh+r19k!enFT+isc;GDg$Pa)a~~>#d(fW{{?~1x-bfPNUtST;%ZclC zQQn_!PpOrywmVwkMQ^}jk|cLJ;rE{hW0AoDx#iR=pV-?V3q8(k*IdOyd=Xgv@c)WvEv{L_h9KTZUcEN zd$;T7rSM`;y_q}Kn76}K1(UmMgC3m*<#}w=F<1z7+Uz~juk!@#ZXuIYJhZF zM{HeS7KcxazW3$jEjHZI*Z7)BokZhm?Gz$ILf8iCv3A#j&cg$3z!In{RS_2?bTc z&~b5>Ux%x{X&}y|`jB0DkO)sWy|GT7%{}0E%&v3e_A6vWL?J!CnW~xA&bZ3Cf-1C9yBfJld&k! z%Q8>kOw6RU`P)D(FU6peXky`(sa53^kK6(-SI5pz;pB+t2|?W&j8SB;T!<>)(?Hu5 zE#lrm)+KdVEnLggi>(cxm}3g9*GR5cxssflhv=q*)9XzW^i*E5l^yrv==8!*}0nR%za%Hq>`&#+D=^!!jOEbb!t4-eK5k z9OD7(U*a1YLhL@rWVnxP)%YkoxkqL#2@SS72wSjkdw1%yK8XCPxquinKD?{c985t-p6!=rgHW(^7vtSu8FZpR{8(r-p3B$8l*rz8A5+$^zEus; z=+kJz;Qgj49>B3x+{VXoA`=+I8NmY|ebD+?7r|+qbB@?AUbT{a7LO0Jd{2yS&KB1B zi}3CsYF3WRW3d(YdmhDRF#6{KaE!GFNS0+y+~K1i0z~R#GDb@y*b*wn+gMc-XW!)7 z$DZkX*v8QrkQOzkME8E8&<^ZkQdL~o=J~K@wm%1`Kp>^mRM7uyR;UqoJEe;FZ6I9M z(>i{9h>aNbmErVnrjW1n%<9qF!0v`DXphsvYb~$6%pqNNSjfw+TR_a;NV5GG^)d~) zaV}{rtsd5aU#e6%l8GZFu_m#Upr8rV!~R)2C#|+ofvAl+mRfI{vBV374ypNOJu!WD zVxKZ3!5C?A2d&dns2a0|cP$Uo#V?je<4mdW-(lvTjA-4|)H|(fxXZIjxrP`js)n;2 zX&iP61FxjR`rf{TdFu~bd}0G!>}{2;L9W&S|NGFsY<(95;6JEC%GpRMj8?=EAT0@a^+GLYx7s_gRNB z^{azjeT2S0hkJ?ZosE`Sdaw}HEDk?sZ~c^!w}Jh(&2?o@2tvqGmqg#U{W%(Z-=e!vn)3EzzI6 zgiapc$5aHu>nk&$DxL?la4RXL$Nfqv1gn95S*4PQ8XY#5RNwik^;hIZW2wfWGdOH< z8JVeVkx6e^8>!sPqeRhj1faD%O`9$sW~_r`R}#@caW(YnF>B>%k!S2wB*T1Cv@BwAX@?Auqiszsq0xo5MI z9?kn{n0Kl>TBSCfeQWb7lw}03@?;DRPwx|PiL#lo7tggO)TInz{V4*3L}ZppcZ6HH z7L#Dh68v-6LOsEV9?^rIgrVyLl56Dl@ML$ym8h~$Px#t+s|B`!{ffWvydc0G%;v8U zle)u}DRgW549UKIkA1vQgSm6Sn^}DtL3bF6<4L7LnW-F%f$Q6p}#b@Br%v^>fJaQaxUEs@S-NyKhj-Z8o4J_zr zyYZFmI36i7rNw;(7JC#N&NwBcDdIfihm{puzIF8GEY}RzKsS2y%#QE6d7hkQ-`e8; zIlb-XOii$_zTWTdEhh|@|G@lgInPBL)`yjM`?2~1rT;zBOt+kZBl+d!9i_;i>=!LXc+Ge!$+93JwXs=-nz$Rhf7TDN9#06n2Uk6q?gt1pagA z6nF`>Eouu2J&iSJFd5VhXNji`K_SpdP<<^V*AFXYfcUL=;KrlG7ck_%)yb1Z)u}yh zJ$`5gK`6O)hBCNzQU$myw%wpq0E_L8s=Jos1F!6r&c;DEfL2C^fQx82FVe%~p6U7&KmJO4B{QDFLI-5%(n z@qHvovJ&gYHsF(|(`&_=>jZuYeF2}#O8s^(kOkyd$h!pk7z@!@AqZu^z=qdi8y*)F zs+ltng6{5#+mV9Ls>M&WR#M3L?7w=b+_f`}ml(hjQtN!T1ouQfCN)EU50Pw@(bje) z3;1rPa^E$jX9zxIgSEd&q0$~CrfrRHF+1N5=`8p^#PKOBrSTetzm`v#H0pc+u3(cV zY*(}nhC~8wTk&3pvm>4F@IW3eA-J#~pWM6LnB5oqCu~;tkzeTn{1*bm_x(rbZ<)Y) zeDU7(rSly^cW-=$)YCdo+hp&pUB({X(rV6k=A-f9LhZ=oJY)=u|Hbj)PDNQ1O}`9Xg+n zvx-5Dv#Nf&PmK#C@H@RKy3`S>Uz+!~DO209+nc?jIVkG_y#x5tO3Emv+(8UHh%K+d zu*L=IRkxvC%_AMV0P=bFeTz^ti@pj!#svCA#*OE4%NEW$t-iMt#|RgzJu_xqM+=ma zr(tjv(WlbkY-(?ET`RJ>O*GXv8CGLOMq@ns`4AE01K}vNK@-`!8%lvke3nrx2GzZ7 zVDsn$xd~}EecrX(XfjU!aq=7QB@gGlakDUI63+ZYI!qh6zE`*3E~Ci# z4E&dxwPLdQ&6rEwHob2dy($zKZ*m@ezKOI}Hi-BH0B@rg=CM59cxN9-kKdJtfbKn% zV5RcRcUM&0J^?aVM=zC$+fOQaF?S~{{ODRCM=*?mayG)skwwMMm$(w5Q%sO?Vje0}}MEjRP-&Nlc1yqsNx-rm3#CLIbj64@ndVaB_n8tR^%AaHz%ay3|mXeJtlo%WRiACJ>3mYO<5O zODyw=J&u=?^ZJyC;V;TbE^5rZ-l`U0e7R`rN6QcjkhnS$qMkn}?Gk@=AQ4k8>JfW@ zlXS5+-lC^}AsU;_&#F~vn5;lDF^HGO8G$AC<*3l;ezuc-Q!Eb%y#g=vwhObRahc&z z&}}%R1CVy9u2$kZ(1rPYyC`gxV}jfXrrXEvZ0jpL!1=12RR;kB)dQzo`v{js544aY zvHNtlNt;y+L>xygYQsf-&PF*bk4QBv_*isx-`0){K{x63zF2m$8Gkmp#549bN*Syi zv!fY|^UP(s5Ni7H80PQ}S-#bZ9-#w=A)QZ3l;NR?oo$#0 zH_oo}FoBM>HT8v{WZ1~$&roqG1b@675TKczCsYutJ9f8M#BB%$dRX<_v&6CC!6EjT0}P?U5CivF9gbqACUHtNuZl%Ht8wak+16vR}tv zz+prB}B5itDm zMuFY+yRg;#o;)nY&#wejudzA-N*Rb*>inIU#wE9)N%iTIc>dF9iR@b#xn{ilD>wTQ ze}w{Asghrk8~J3r!4ryz(KSkM;mHq=Uo3hK`tFwE)$Gi=IcO-iqafCc2hk_W?(lIU z)x*-|;euxAap=_w6|m2?0+x3~Mrl$Ef%QVhS4eOD^kZM-JiHXPA!EWYN8l{f&Lhh~7bO5lbH6ulRRmlJ z>k+{+COa^ot84ArcQ<=F@DzCMH$MpG0`6Nfnw^1+N5X^hb`sP%YEuRBlz=mHrB?;c z^cF)dIKnPp!^LyZt`!5XdN9auKfoRg2A!LEPV>IO3uF5JG7t^{g&KC@pjqXEzg?05 zZjN830_uK=qUdeLM+Y@fwX7YSltai9UdQ;3fycB&Yvw`9h&bYK@c&$9o`}eNd3yL_ zxibCG^K~iwyr{5^;+D6*YxyYhitE%+)m{F@&*bLU|9K5;xqY8*86=b7-oDGu6aCyJ z>UiMlh7?sj+5+Yy)w- zGt2DYF8-+3(-e`W^bQ{{htt!z>RuhSdk^fyrQB-a^rDG!$_=>-*ofX!|%6DW62xB zf5=9?|3m`6`XmqaXH`>!hfJmm*pTl5HGVerOBuk6jMUB{cdQ#yWLsiBUp&4Q zZap~6V%I|}U1&`Q=Ib3!!cu=yP?No>My1wJU&2d9LCJ<43 zfA7h$Bv={tXTu;?1p<&P{V;-w06@%EKcT3uTes1dP z$5;s;aLHx)vj!){2>wJlegc`9BIdJ{o5f0!L@-GRlUIIsOR>&d`x-u>vSL6c6{+z; zIRYyIv?mt)hYy2Zt$M)g8uRanms_*3#y2EoBzWkk;(&TlJk|F4)X}{7zvqz=8QKLVb zc)Zfd-lv?AvfvSQK35GBvckWtnIJ_ofQmf4V_M9D^OU2c@K_-EZYv}?^?T~$+XV4 zy>wMW^W!L5{qZoTe<#u><34MVEsWZ;-PuL1sB)=VbAJ5wu2!qfG1u3*Z@2l;Y{#K@ zh-PL8XQ{wIEzITm)1Upwk9TqaSHZVZtqBR2UaDGm$qFd7%D)&-7ze16HkXR2sj`w8Onz7EiCK z2lymDUp8x~eEVpr^{l6chZA~UHAF-ihJDB~e`jZhP8dL&&1%TVE(|G$9p*MLZwEVT zjosibDsBb)o^~nfHiF1+#61f84^sqk!FOVh_JNjwy&LRzrfzR7Bn2{F3NGyIWmy=w zIeM4jCkQC&TL91JMLiHMicf1dTZi=u+-jen&6m;sT8g|%{<59yL8+ zQ2-Zzqih7gx(i}jchVep7>v1VOL`{8`n(^19s9d!O@ua+<7m#`=VUeLg8Ys2g*WDb zW@4#BawEmjq)RGELT1Rd%MSa%aC+lwm%@vNGv7bz2~i*Q+AnaL40;P(;Pg&&2zB1Q z%)}fXeHh`z91&dX+Rt^@q!YZG@5q#5YR7Sr#f+EH*&B;a5LxJ*MP*eYzoEO@u~lbW6f$int#|Lf$8@w{wE`*Ak$Eb;GG!_U+TrGMib+HHppSp~Ha? z3{V0>18@XKW{AL%EaFtx=MH!WqSKmnQ{iJ&(TzfMBcrZ;wqDCJ(=LEX4i(nB4G&?I= z^I2PrwB`QftzmWB$B|2=4wB@^M3MxMP6CnB{XeKNY57jAHC>v`AHF-A+Q%IKmFiq+ z+&n&QAC?VdGl*}A7E0x^8_E*yUQ4~)`dU4|-XVtdyJH2KbR1p1uoFG^)>RtYAVuHe z^5cKaGfL(ciilNF!RU2>$!$Ni zq|LweO`t=-u&p@6&+oMAc=hzGY>ZjIv>ScAM9~CjH~w8{+|x+qS;KQXiv>!Pn4O~s zY56b4Aq6&f{Y3?>E<2Ug` z5~pIVxs$`dU__w<6J!lm3Z&#UZ?SzmC9)dJuT=M~NXpv&zUMn~&DV^L6=-AP7(TDuug5O%T5td*gVfglVc&{Y~t_ z`w+pE^HaQ{{9B;6D0;Urg;$C0j5*mI1UmVie_Y zWU65oI`7|0K8A`%7Z)Gg@_w40Yc8hwHb-Q19?xKPPS_l~wjQH#WT(xwN7sc`$`93P zGly*(fmt`UQgAlMir&R=PgC(g&dWqY%4XswFDxp{Jao5(r&KoDI=Ni(Uh2P=K4J!1 z_dHxh#TdsJ%o@T@B|^Up`B^!YcNFwbFjx`0=zmo zMzk&VM@e{|6GwhC1zqKPp<=eViP<`g48{LQ-4xUqi2Dv~@S8zWa>cS*;y$_J)qFLX zOG-L>E|NIN&lhrUeenjs)609{R!1aom@zV_>Ceoy!^T_GGx(LZ_U6^b?+NJdj)#DO zVZFwoH2&w8_7*Xj4F;+I%4xhHZHkdt zon0rrjT+j3+Z%W>Hz#&{?S~H96kRcD>-W$D z1=B-oNrda7loBB~KtTGSx89B=_SJds{%1j+EVj{Kp?`Fs6deu@j2lWKD-^W7mgt!Y zr9;WboD7V-^hT$DYws8A)d{o9SK4YJ zTCk3dNu2hXSazb2tk|jk>$IuhqNKt?Mbl=TMU@>d#U7mKnVyR>>%kPL)$OebM~84D zh;%6AkFgyDhl5fKXD1Tt;J%#F-0M7F#CE--?m?p3!vjQShh&_aRaLnEEA+&FKoJo* z#r1~J`IeH{{hMfkm1KhpH$Mqs#$KBqXZ$1!*t?WhtVz)x{*Rm#r$z`0#2TGHYK2Ip zKz-#k?K-z=8IN79TlgYgCor+oC0uu8&kKA4AY=WV0}6~nC-C!>A7TDVjS+}quI;#C z2EaQBd?vpo&tQi3I?lM60$AD5N&l}~gwo9xl!G=poi}E4cQ{0gIEm!++3cuLj`TxL08Gxg>I^Fxk(jt6qWa8Ep09po45FMuveg^RN zDginlerUJRTtr<iFZhF!VOZi1XX2bx!oknCc1-@?p#G0i|1bBH zc*d^~bTQfgr@b=`gfe>neu$LNhL9~GWF~utv2SIIiY!C+oiKI=m6SE>*q3ZshHPV} zQe@x9IwZR>lx6HZxBn0QUOX?K=iT4S!OXeuxz0J)_5FUX`>cCd=vG=N_zQ>4ot32I ztiL>oh|A~I@~)mmIIBPD@0qTYJ()PW>V*KRUqPz<|6*2x3y9fd4&i@u{Cofqv*gSI zYG=F2l|RWq%(}!4y!khg&I1#P)#InozmNIi0!*ZCU9Ib<+oiws6>>lY{>9cW|8F97 z19J;%`B3fOM3P|zCeo`Q)$6BopXmJm4hpCT{%?2c3YTS9GIgnWH#-hfNd9UL;`n=( zVt#fZLuz)rx5;^Kn_tX(uG|3Pu3iMIz9;Hvfb@1>P2_40VKKTU6(=9Xslmo(-KRVX zU*v$zadEiB<=z2!TMmW%fiCbD!?SNG!2fvlMFn`Q5>Tan^KN2Q?v=?RvSnQ84aNAb z*v9l3-=cRjU@cXlmu3GIIC0XCNf#zVd+L1G$wo@dqsQxAS_(7-5U8>vC{DF&|MMoSBpcn6zU&3G9kFG(8eXIA?3>wY zX_^zCU`B>M70F6V>rXit{f2MPccnxax;p(<2F%7GTP~}kJ-aEkpUKP7@0P?};27sPDXLpBxn-8f`Aak(e7a{M&o@85C35mL{Rx-O zb6#zWy-NV3Rp|b`uHt>P)CPB)QPg|snE1J%So%jjy`wO`hnwMLv-QuicyJFz+Bt0>r(YRtd^Z>TOB*9t(zVMe)K&BO2T_M-HAtS1djix>%rLB-X2S>Zk8hlW*sJov???`c^PR+YF)!rT5$D#5w ztCyWaA$UeTq?R%L0yPUqv}K0?u18wZb^m6r@m{T3Qnn|K;EdmO9oyUh6El24sd=X> zU0wmN)-Be!V|m(7Rq~fczy3s;uBnGLqpvr>HWRYcqT2}AG^z9Q{)YFhL+uR9`qEO^ z>npWrcvbLo_P6=wJBh{JSNX}-j4ryrcf|N{xzODc+CqAi#0%N(%Tx)}Oq-kDeOrO8 zch|_LhmPvyR?zrPd3qKvjYYBVJ((+Nq&{K~X*A%Ja@_mDbDMNsiq{B~xC#ffR3g3A zGNnl(^e)*Jp2O9q!E(>R_W|Pfn;0*=Ywz9ws)IK>+dA{@nn3_@>FU;`c~>rl*-l$= zrzt~zN0&x{eEL@no}+Is%cBo z>~F?(V``RRjr{t9xc>EqeVc6f!swHgeLtJ8ZY-4_MEDW|c^P&64=tM9`>GUdtNo4| zJc}?Hu3}@ml*|@Xe7&Z-$XC_hC))gb8&6l!nMbrFiq(nqI?Sb?29LmM{G60O+428GVa>BeG<`ibs zmrvBFKV1s5@yF0z4T%A4qm~BE7W^Bi=Jk!>Ru4;%?QKBIPzNljQI}7*Ov0K8eNYGA zDZK&uTS~vY$gkA~w5S&S<;%X-4SfrLop~KATIz#~?ryD}p$4n&)+vYQi^H z4oS#09C0~8B4QQG@uI10(>tB5=Gi10qW8Kz%R4OnH)9s~h0R3{SKC0A*LD^Chx3*p zNacCv`c4?c^evg=UT1@$Ep0dj9k^|5bubb*$~j&^_zEtR@oN1KajR|R1OZdDZi9Xc zVXZfa5)YpK!JBkIEqThn54X+{CSxS`;M#S!p-el z8s^d2iVNzo0@+QT#*O86L%kwDu-|*xXF4CzG|`s$9$AmMAn5(PYnxl+E*+F^V6w6ycA_4?Fu(>Yjei&{(jJ4@bd} zuPyVCSdtD{-wxDeBL4Nqg}sd10CN@oGIbu<@%YSn0vq<@`D|%N%v6y-Ps`p2(BriV zn~zPx%azA=dcRm{E1*l74XyY(?;TygY(?Km({#ZVSz0WSyxD#@9>0IfmKe^e`iu^H z0f*yW`FJfof_YEpQ3LI0W)i@XjO_H!-4(7?&J#c@s0kI?SXGGZojZ7nDMTAHdKny9 zKpdN&nm%i~rtO533Tf0cgfoa^F~xcgg>U1V%tzMgK*||(DhVyFeT3Jwey+N4Bq!Vd zuhcKTrrE!oqAgo{Oq#B`Tyya>KJ>NNb12?jYjO;qZmC)6(NJ2Z znST0$iu2z-j`d{wBoXDe8-SKRcEQRv_t1VI5e>2*6)JVu(dtdRYG2IY;&5c%A%hxQ z0@JB9)OE+Fr5rddZP0Vublm-zL~vfk9%h!AET5`v;ERRAvhX28Is2n}zx6QZzD7%L zFs!rQ=0H*!w>EyDFC6a5d%31%6~PTF`8>b9D5*;j=ONNVu5|siV;ckSqC% zI{;0Xt;Uz9dScHB-(=af&ux0e1H>z4ueJPPpL@^aor5nj*UJF9X>GA1?%P2DWgkZ`8jcxpdTZw+4~MA%B=o3WmCSJ*D;2t);$y?A>_aa>4mZK#dE12!XMVd+(k^@l-eT$hOR z@_Bl3>tNmTN3)Lv5Ht6WM+qN`>&&(MM|=w!iCT-ESFlcw|(;mE$0kPvq6Kl{9mZlQAXYn*VeSn^=51MNeJl!28F| zq{4!mOCq*w=X*&tmqqu^*>{rI`_(;c$CS<`^(bh-m+FMuk@3@U`1S=$*jlY-nfBa@ zD!t%4^@?2RXqO06Lk4uZrn>Co$1=$9smdBo4BXnT@{FWIx(A+XW^nO=-FK}4y?>? zYkiX2+0PTl%L~E6hSiK9_h1cCf9D(*mu#p98;ERKr64Vwb-o8QrQb?dVp_l9-!|5*6T_K@BdO~ z-L9RP>-A|Nxu<6F@-2!v)enWb0!fp;n?Xio3zD4-WS!2~Uf(}89qwtZ)RT%~4$zfk zI_x==D_9pT3)xy`uXGGL{9Rj%^f%3{`|LhEdONLLH=8> z$fK^**sUZXWc?nYwk`)WBjCP!BZw4cKs$FTSXA-7-2TaL-J27X{D2;^p`~&8VWffc ze4DYlQmt*br8x{(*2W>lxp9k6B> zX=2#eu5_`-%cW*%a-1~8td~wjL5EN_sg#O?G59L=%-kkrIQct*`e{AwKTirWsJmk? zzImOp{i;28DDrY{DC5jJ4LQntqxKxsd*Hgm zVv}WaS@+ct=TkjL`YCC-3myRRLfPWxJ2TQ2`=Ji|I5?T9!t@(WR2yyqlx##DuRpcV zDLMT#e=zAjkF?;P;(#BGiL*%fr%5KuGc7ED>ll+-3taE3{^}ihX~=d^rZ21eigop8 zQV~SGf!kr#h_O3*+%vQ~W-`{U+F3<8U&wjqH>ud#JkbtfP+(`h5=v#hsZye26#d(r zH*v4=&?oiQc$v5XJytX4(KGJHS#La-+p6xdx%bAdesh4l^Zh!*zt)uaj4CM64R0DM3bJ0&hgc^1lnLz% zM45-Z*muYbq6p|<5;s8THDa{8r|AV%BAoh@(K1FKZ;clv+&Y^7jH(l7F|mP&yRQTa zoZd?5bP9lsGORVrxVLAfm^DFS3HmU@#?92Wc*&j6t~cpaYSmI&Eok<-x2ZsXVm?H< zVB)pCt3j=^t~xXH_F|exU&e|q`-N6Q7^B@Ru-=1XyFyAwmbm;T%HJG7eQFluxw52rW@`Wq+S(vU@LCe39nx5 z+i~fuFjjMsG{a^TTw3z5z@iabs1ADQ_xdbC#AwkohvwEc};9^q;y#T=7g9w`tR00=KQmqL?K7UE5}XPL?meC)J8? zJGpln`+Z>tJ=siHy5qMzYTVd9YiaTO<-?{kiTTU)F(oICL2>GUje@mFfQ)d`aqLI3 znjAQ5I@&eadAL*3?1+F9Nf@q7(!FEnFInY|gfoa3{%#JjWR9>}_z_~>uJRg_(&4=4 zet3J@+nrwuH;mU*jPUsO{e9;uhNZ|*t2}({NHy-Z{9C`8?+CiIe{yl%9bo>{JgXSW ztbgPFlo*~w)WqQ)Ft6IhQI^|QX#}EDD(D}y?!n*}jQrYup)<;ChA&vb{$zi*rLhNt zS0;8dRq2O$4PcmXQJXkj9O~B3>Ine?!eQSl@LsY& z*Eq`v%dXb%ZH@wV-e#wNAqs$QYW@y}*#=c5KUdITAbrpM(4Nd!tGmf%8r0g28w#vd zo%jY;E|AOs{~c+Jv0?#GA)%&t+|E$vWDwSVuV`Hdc~_@*zrpLTk1oF>+RPJ@3uh7@ z8L#Y&$4~#vkjnDPoSOsa+G>=^^y~2Y)bf4CJ(!Q;+2Z*pO1g)1;cFRPFv#rV*c$}a zY!W>7t#^r-Hzg=2+`GZzGVkJx%ivzVkLP^1x|kN97blL_A)p4nHJRqCGEu8LALmMb z2y(T)omKf!gVYx-QrUw%>n!ORWk-!ok?fg2Z;9yajy#a@4_AG67J~ls#|&c2z?JaB z{<(*vm+95MTFdRe)lYd$J>$Wd2EWO$d;1rSsp~iO&4Q%aCLoEdxUZ1^G>XR_vc7H9 zc*MyLspOXmI%q<8)y<}LiM&O8k8Tr|3xYqFG4%dak*invxgQsZ>OK?)C{f|GcDFul*dGS$j7UnSNgfuLG-jCHr!`s> zGtRN6rP67VU7q*HOfi6Cd`5hB{(MPIX_gqsaCxBPQJGT*JCa-18*4BEmnlIFmVb;d z{-!p(4JT@HIQ_D}P#g!nsSQJIM9o(8s~?ZzV|b;Kcnd<00pcjn zTh-L^;XjY}Ps8yl6R)TILvp#sOSAhhu+b=#j>M7yOujV7BaJIDUT^r!M}pYsk)a<4 zZJ0|#bM$3Q-NGVjHYpF*j-=)_ZgEHz9*m;95r@_(*>aY+mzJh%H108XU!P`49*X~S zH~D5$wsvm!<-0HRkmEU4UewjmxiLO)3CKc7zzxbkd8l=99Id85+VAh<_9YXZnoq$M z9O_Z>ioWP^k%6X>+aLljtD9%z+Xd&z6}x-0`0#7yXPaI3@%%8fz2{fo(YiLYA|%Mu zKWy!5N{jj+AHl(2z&uo2w%@R>GiF{o+s2m?O8)?EL6M>>XXH?hen(s$XFXh0aKksd zP}d;H8Geu+x1jP4gK^z3YmH*h-4R|64kS>Z7PglpJ0~jDLpJ8eC?#Vq4caK`g`b&H z=ZGUf$9X{|Uf@pRVo$Zv{^Fy0i!h;nO?zO%YyEd+p zopsp4WMAK3Wav=7!oJ*13%$@*)?9y@-~spC!w9(D8-Rh+iCq2IKLd>7&HHQgf|ea0 z$`|Ew%Us+#L*~04HO7U_G*{T7n<7cA_~LUP8(U)?Q744NFI=J8LpjYG9@{r_pgr9O%RsHU_rd3A0&4wa zTCLh;4~>ea+Pu5wobYl8TZYdiN0L-Nd$AQj|6uw4_CMCuA0TrVNTZv7&I$9HrjJmA zGfY!lX2Ewg=6PQf9d5N0F*zR{9t4rrZ7(kRbU#`l4xH_2fI7ciU9sXbH_SIN&%=)I z{N^*PbIm_n=U!t7R$<#VS_bIGo}|um(M3iA9KkbZ$rg-+}+~tN6J9;CELu zrz}KF;Xl;kl_zGg~Bntsfeg?o0}16o@OrBUYH%rE7T=#Qqa! zuXMhE0pV12c=mw7d2=oMm#@Ipa*31jTgQ;OoVo|{#&~TZh?l>nCVMB%kAtGorxr0(K%++lv5sn)N#vI|d9muI z#cJe$9IA0&ZSd)-D@bm9sTp-sj=N~Gikm>R3-s2_?PFR)Gg$w^I%u8u2u#(kIP@Lm zD@ND2)MwW8ynZcJ;GBoHDYP5euFn93wQ_`dCx?4iZifp%)xPvv0Z65pfyJ_qLl2KU z7%pCXxKf_H5?Xj+H__=pym_;NZ#3s~k|*lPQ7hCG^p{J}QYh%#8@|lRO+#P+Z12OK z@uNg0MQB&VOhP#{k~k}}9xc}KbuF2&oUBIQ3y%?J^Mw<6$UMrv2n<@{F!J?i#r)ip?$9?2%rgQd z6=g1lU^ijV_vx^94NfS;fX2Gt5pRGM#mT7B?m102M^3=>9tBvg4|kOnZ63^_fL=kE zOCzXnT^4{z%Z(`?rh!nXLPQV2rgjpgC1VIaDh*8#QaXIFU5OvhEtOwfF>kuh=GwJS*I zM}SO?gn9dk8rA66B3!D@)myi_(M!6$o$=ra38f!}j{DkDyB%;c&9223P<<6Q_IFDQj1gkOWh>J8TOq~Z#4OZUw_}dZX9>y`SN5$YckpvnmA~I^n4{s)o zsH94G0*Y9Ah*?{F*OXQf@kSSRFZ<~8`)e)Re$d+T53)OHB`LY~3*u&V{1mN-hcS0E ztfYsSXGktkx0g(Fbs8>QC8>S)*2K1qxco5N_$WY5@nr*WTv!*!R_NYD#k_m9$71P- zAau}!s>D_CdI9Q$+hgrHzYme-CBy_k&9^XV#GOz*Jood$DxZORzw$2EtvkHZ-AR%L zlCUaSp&LU5x(X8odfWyyEgGqD7WQ5$!85IZF~-(s`)l|mkzNqbfbIC#%P59605e~G z++AEtc$g+LeaG}IT);kg&pu?C;~W3=`JcOCQmtjp6mMbTK4ue{hR=iid`j%X7OL>a zeFjq`;ws9)L2{5}(gm#d(FcSa*E@+TE zNJU5d{T|xGLR?pJ?ejR)KIYcjo^8{Gb1kj{tvyl7h@c89cf@_MzL7I^DU{kW7SI37H3+nO%r-SkAE%K4Ay|iP- z`j~QE|4fr!k?Xa)9Wd3^KXuzTYzkbR+GTOxk+%J!ZJYalmQ5e-Ut2_aPKf7Q6&-2! z+mPy#jczG%_$)KeEfNd3<1pY4df1P78N-M#syE z!?#;iz_f87eBx*uP!b)4$gKuU%Ll!Ni+aTwd93K_i{W0o0%ufBe1Hf~l)8!U8#LGe zolLbdc=s7>C2wL&;W^lM@`3u$7ff#bNCC#14WqSEese!R2c0o@k~iMb5b62Ssxq)A z4M`;PbOu@QBNk8mbCa1Gz_%b!*@FMBD|#&VSH$9(3lA80ypQ}E3(ldS4Pjx1qy3g$ ziO_GD=f7AgSA-0ulTEtTGRl1A%|q@=<3e6D=p`L9!@(bmW2}wcKvR+2Y*Y!bVw1t3DJ<}M5BWt z(YsnEVPvRIT?lPA<9wkW;RJ8-j{r{M^4CrSjJls+p|w8pvq|l9Jdc$}scv31rK4s{ z?@XPG2u+myf29P?#CYmd;RHx zSFfN+l$4ci=AlWv1`7}z)l87liC;T59m^u&nB*R zWZVv<2xR$f9NV9E@p^M*=O-C|G;&JtKRacK3gD7jWka22K8LPi6+jHekPnqHidGJT z?(fXn7;2Q2RVxN{{V{*W%3Z+^BfrJlH<2eXFt}pg?^aC2Ev?o$)K&oH18u47>Pz-_ zOYQEN&E3v7F)s>!hEZ$7y5iO_)$vLUt~y2A`9cR@c3ug3BlhHKwix+1f@$K4@J$f` z4wFkHp4m_NtBo&bTMgNN7IQURL z3U(D}(}!+`1gQ$qQhTm%>da=9=%sZD@qcpnZcPL0#Ee;!E*Lhy;)KwZAGrO_B0Ef- z>j}BY?yZtIz>TL);$>gDOa}>^*lT_nWz+omnr)d^x;T&t8iI5O#!>6)w(l_a4}fL` zt=X`l!rvC39Wdxhu{zV=KPA<5n8)|0!E?6-NyDl$T`jI)$$La(PmJsu8nBmZs*i!J2B~aE_NRazAB-6VVcv zFP)fjSHww8?ESSJn65)@2Y&f`mOM7Pxt|Ujy2-SDi!g+F=8y6G0Hn8^mff)X8ua6p zud9{cAM700S+?~LKBciI?y5y7mE%X;rM+&--4}{qx_u9V9Rs=o?50axzs5{7KY9as zDu=u|^z0DcWe(FecT}#fu`qmF*jy)sgDY>AveYPy_}y=yesZwCjsz)|dXBZb3RWjNQJT>&sJfZR!&n z_70-XW1{BH=2-`=;dSz#=j^Rfu+qm32hJr1^**hmv;AqUT5o>Zu0BOx8cgn1TkcO< z|NWzOi;3g7$|XD(mujQ$)YvUw;X)F6&(q`0xdg$5VhGi)R53neS4y<4 z4ye78aj4Un)hnFr_xA{n$gI{U%F2mCQ6d1EW%*{VLpL?*p2mF4jXbR&RN|@43pCdL zFIEpU@&0cE0`TmC|Cg;AFDQC!8w@RMM_*r{woBVNZQ%YN;U|OG>G$`m`hfN2B?dZ` zf{rKDmG}O9(#85^x1&DZI+LA_g-l|h##1Wk_?_fsfQP)0-U~ik703aiea`(%ke5Ce za2EjKGyN4bPv<-EJMx}=s(%&|>lIQWV)%{EcTcDC@j!?YC(j%f;6FYBZyQcbtMJeG z0G_R~F8*H^BYori8R`EfmOL|E@!ux~q|>lUU%+SPPW`*a-m9$AN=jk>)xz>h8@QJ8 zh}5_LdRXL@fR~tryZ*JXkm~_s?UD3i_^%!oCg3Ibz=MB%HLO;o>fX_+%Ccz4#K-^u08L&_N*w@zo`8I^5aA&$y?jP> zkbj3hn!0Z4AWxu^i=!3T&JyV6?PLkG^a5J}0ABO%Y6jTdK*Wb@Tw&;%7?-RTfk~2! z8);hk6fiIKs+m{B;iFH4EQ}8Fi+7BS5)p;+-W&xJ9gCKQKP>wOdPaj1Se9y=mc(PisLQtt$o2Fn} zI)-;CL=@8X=5PVIaNx^@Q;q8LOP>i3j1?(Ho+EApDAQ$3aXKiX)V%Dlezz1m$1*aT zdIdJTJoE2$B1IDjjpn$^+PAi@e7DBq)s3PzQ)V}Sxf>7Y>B5Lo0031SEGelfFDVIB z{WEaLaI;c%5Og*A@pBB`B#9wniiy42QNm2d7JG%r9CSf7izpwYDuD`%Cs% zjR1p7+veF>PgzNc6JXHv{`%~QPR!zv8zEy_^#0j){3ptp z7XYY+S$uZx#g9n=3#eR=ro9DVTDIK&@T*4cMy{o06N@4kaB70q>38}JeVn?`(_2O9 z03{|JKbTqwlN$hc76)xC@I&=DbXLBHAO?`j4!r8`@86Wng04oZ#gb&2v@UweO?l!S z{z0k4!t0Ota*K+U5vohbnaA_)IV0iO$ff3Es7RTq)?iXt&-X3Va}U9nyowQ1z$3hm zGEx#{aHj~ACJq?vulkcBdR`u=Ng9)rY@zN*9Q16%hl$%EIwvs*QW^Fa7a@i6VRqw% zDC2Cot^=n-z4CypY}(*2@^45AF2bja2UCFbv07zqmB9M&x_tuh_~) z&4Oiy+=CC-6^0l!Md>j#7=xxUANOL&R2Fq!u8_Uvh8dWE6&3P`cc&|!Ny8umHpxuk z$yMYT$jMT?bP=&^nP$+nZ*l^!V@i_{!T(5!bi{s1gf%omKgwJ61DdH zFt_jf7{0CJI(xjGAm_!gKp6Dmj50byHcK@>4fAUN;@x>=@`*AkW6>L@_oKzD_k^;- ztOcP#17PGpN^p%p9K;155}&o~e0oHuVAw(!C?{2pP-^T=VJfe9xbRh#C|IDQO;&r0 z4geYW>>j0MNG6uqQZFV#g(4KrhY%KQ=f#?uh>hm008jx^KSX-6lnD_!@|4v)1&(6W ztPtT_bfw0*jZug4*vO;Oz+*~AiAxzQ0~d%(kI|*^ojD`Z#Lr5 zE}FRq-E_N3V;1g!VH!XvgtI zRvW|J8Qi4BicQA|p2|DKNzOAOrUq(6LQ;Lb1-Z8WgAiTALH4NrZ15q_Z8j zeBDMvC^x}kn8;M(q;k+HrWZs`*$N$+Y&b(Ow7IBEFr^&=RakaVf*lT36kI_CtGIk9 zEWs~V;TsTiR0zDF?m7fdh{Q3mC8T$vM9e~Tsji|pyQKV*#AryP#or|1(vV?Ms$0-; zP`r>FNOu2jRR}*9Nh+gENs#366MZ830$7=>!VvK}Z@vWUb$EhQ1_KJ3`?WmM3lbJ_B`cu$s_nOl&%ZXTBV(>(Uq!`JjvMYubVMPGApe`pHRmlRg= zmwU`r*74NbE;*mtF46fsQ);3WC{I1f1ZJA2(WfjA@d)zBm@XBcu9`5lb>g#EMxIPqhr z!!_e>?{0<2V~T(oOzv9FIQA@1LvPho)ynr-hFLkg+UcEIwaV&>>JQFEr>{0Pz6sO0 z;ZWe@^}kBNp&KOtwZqBHg~pzm>A+*p`DkZlkMF2$QP+16%-@>@&arBn zXqjsn?dmZr>s5@^k8Mt~P$;sD*nB*e2Xzt)F{u4{N7(ml?{{@(N;PxZ`~e?Y4(pE8N;d zG6e)|F0#hs3rrekn-L9p8Wuf1HYd0ntu%?WH(*Jtp~_#OS8)wN6oq zto+0}Q$K&5{GpLz#qs?LXBzX%l&`Uu6D$2D>w({&g%?tUWBoY*D2V6`Xf`N6kmE26 z32xZFGcgF4@RYF5a(l^~^kYiM>3%;;G9aZ!Pt@q%MRCW-#+%13!pA46V>wW3FlwM_ z0W%5kxE;h)UsE$tOJSiU1K;2@Qk{vvb^r0UgnGPZr(|bfrO4mLPDwQz9*>XtS7;lx^I}+^F=>UKK)0!;wxpj<+Mdn5vPaG zr$#u2^lud#_{V+LYoiJ1h!h8M-0V2)IXusTaV1`v4UD{HU6ga+t`|*B(NCT4Ge6fp zH$Hj1d3h@g?I_;3s+Z}h@2&6I>vmR!ifK2K2_>TW-0h<(r@V4fP7+*W@Rv zL#C4#B}_ML+@QT+aOR}cq<-;&k_p$N9!Pb~k@JM8g=m;l$$I4d9Dgjg?YW(W$KJsf z|CVdaw%agTPO~|=rSWvjN^DllK|ou*Lz%_(bV`;WAecXF>Bm{0VpoGIH> z8>;Nbccg6z{9kUqGiGvSEM>T_Nw2?IuPg{KI^XYjQ%h^Fu$1PYD`QBf@8Q~bd`7mJ zxf#Bhs1s+T*8Zlt#%*&!D@Dhs#Oc#)LuQSBQwbUQxxe{t_{ zgt4&V7v!CLl)KsaS@J^i=u*rsyMWH`Yi75GmkUdTX&6QiITWoUGPsg;%v8$Qnapm zuboJ5^+qT-yxTJ{GQfB|y1UQgsjs^mJbFh`>17ChO)(kp@cDR3V+Oh+yLF^7U{|Im z{_6cHuj5LlQ|SiJv&VJzfnenk{^FybPjSxOrG9EN8t z3h=CE{Ob#Fu_9;Qnnfkf?N{_P3wWH{JOj3Ya_Evw$od%`92G?42Ox z6#yV4>g5D7x3zQwnps+d9fYZlo7<^?U<+X?9d0EyB_~Ns8?c;@i=~E-vZlF@tvSC1 zm8b}^ke2`iz~0gg1oX1Eb8r>#5~li%D**ZatC^Jw_*=xyR+vgxNfjvR=wb=vV&P(8 zW0v*;dvH*RAOnS5EUX07rDXnsfLsYv*|@nm39zzydU~>WaRl>Pzl z;QAK}5I$JFKu)aeENray_N@PUhpU^k2L$9VgZ|?ku9}cylvUl*)zRI>+)~=Z(!q`T zUm;}Wl~n(M@M}ocV0)+EgMyIvZ^|sp{~_n(?qc^_#=@M{($3Nz0_qB}kNw}|e-*(0 zxZ~e!`_=P%IR9#h8`$dqL;P3I{~`{t?mvV7P1SE~h?J6&fRv-T`!5^irG%+|4Nt(r z(Hv|c@cS!2KesuE-;9&ll8>8W;1hsOJ)u>4t8@kK9Hpq7w2!NUv3i+ zSCtp0;$UI>XN#&G$j!>p#a@_731kjb(fDVNCfMFm!wvL{HFjQhPF{WvE-p5H9u5wk zKg0VCsBP)u3JK6(pzLfcoIJm8w=frwfk1*Ffd;k*SzEF?IavSh_~k|cRj`+(ovsuF z-Qmxzyc`_=uU@@>>E+?!``!D?rveZrAYK9eniCMKez!x25Ri1S1i3l7XgWID2~+*D z3;4^Ne{?HBrmh9Z4I~9}vxHd6#=#}P#wEbPp~=QCz`-lP&d&_FWcwF+M+>l(_y11% z*F*&h{fQSjuq#Br_wS}Zvsc5?`Onp#OFQuIX$u7Yo`3=%^FKpy1$kKh@iYYMPnWq3 z$idnYvQqsuHU4e~|A#o@vxEc;Cp!l-2PZEijzAo|%pf*4K4vpMb}kS%w-q-xALus= z|3G(jv~u$Vxmb!@LwJO61&Qt7Tmc#Wxc|k!i+kEw{_-t^F$hJ>|6q)R?Jvey{~9st zuLbJwAq%noucQe5cDRlim@0Xql{kQu{lVQB?&w{xQs z(J*(hgoKQZqnprgb#~x?RsJ`K5bJ-^^yiL$Sy3Uk{%M1()R2Xr^&cz$A4~{e|5tzh z3WooyI)MLG@;~DDzjXbVuKy7O|0Ci5M%RDo`X4dyKN9|Lbp0Qr3;Cb5qoo5R4fBLl zhNwbA5s<19-b_JO3h?~vH@CGo1=51#B&X*J0N~U9`asF6)0{vW5!~dJq!D&t@zF?d z(crMWAWhhA(z0XkNeDkM|A^lWhc5>*Sw404!T z4PhevtHJr36JqQY^dBJctWQb!6<I58)HluCc8v1TcJLG|~=B<93h*37@; ziYWiRrxxWeBh2(AGRw&R(!`GT4=7k9@E7d}wS zU%7`MA|XMkWLH-kUORO9&JT~JLWS>PzU=Bb}Fm$S=lWUo3~&EKsqr6mWSU17P}k2`2yMmJZuJSgw{n zzkIQTBK&F$-#%o%jo3v4!K)DJKwTxsuV1(Yakkevy`V4e!(y!ZsB&OdedR|l94clq z%sM1t?wzRJ*u&%^N!j1QyM`oiJ$0ySg923~Wqa&7m!pfh+Hs<6|*vNvN5?d>x{U2-*Te2-23PSPP*Vm=R0)Hy#%5Wbgs01R!|} zj$7KzuUk^i;SMu;=R644Udm-M5_9DwNpxr+L4q)0lX{{B=oZJK%}y$kM(2p}n-VF@ zCu;*lHg0I{xdW8O+^7VW=4g+3Z@Q*~B1U#J!0Q?!#rTd2J{tmoNZ!DkYl@ErQh(H9 zn&*^DM)UGRvk=s|CPlSXnduwU_Io#sqXcN`NAq^#uPrVU5TE^y@h{{bK_YLr!t+4A zDUO{iR^aU+Coh@=xqJQRFUjOV>_3G4u@3cNg@TKE_CC+|OfM=4K0)IcxO#qPW#+Au zjGoHl^TDpeOd@n;1g>{w7H(EP^!wk$ihc}Xg3PL(16uE4$tbrn3^axIJAaE6pBRr3 zRJtY`oW06>OfQ;Uj6t&5m>*nWZY3e0)z-4!ERcf$kNr5^nUo1EgzZ}C_Y!kLE#@0! zoRtM@;RkLEtXT%4%~uy6RaxIamX!vJRejRrD{ifBbA<|OO8?+w9A+EuRh5U)xfu#c zj}=a9me1=-HVseRV*=AtNl@EcyaA%-kp@=_g9PPul|?Y#$*K!F1wXz_isCD3o1#Fm z5Q@R+jgVVqMzN8dl5F#TX#E*7wA6W2`e7j%t`9C!WjTjk?1#;0$fQ;+2Ab#0%P+j) z7w^q4h9SoAB}z5(KpTE;gW~ZJbFhiz4|wA-0oSa?>BNn%+GEWkxvsMu(NszStwF`z zw_sgb@N!~BE1Oq|%#DL=_+mIADikb1q5!jtO{n{oA)@kK zHx;pRxyOpe29k-VT$Ql7!^>|2=1W(o%PuWE4!(i>Lnf@pUmfgW{9i(*_DFq_v5UQ) zMaIXIhTfS8^rj$9E8X;jo${3naTBQpA9Cu-r<1Jm4^Ffh+bI=aeS{>gk7A21Umy6g zcUCu>u0Kr%-ZSBkLSvOD6nEH>umPHFf}|~FCy=jC!%{tY&aYdnVNP=_v#y|(U5>}h zb}#PGPoFktl942fJ(0{ZLt8+}?e{;w)7Ep)S20iqFau(zcqw z*U=R#{yAj#Wjst7q^(&b!j0nB2lX^>x0Fw8W|bMIhJ&ZukO8J2;Z3a~i~X2tS}Q>| z3p13!F~8x^?QPi4&broSyi(C%PUzUGPi&JNO8gs#KT6u9nrCbqHn z?|A56{d(-I3t<_xyuiinC!Is$008R3)t{l_+Hdf5Z-3BCuEgF9Fi%awjNN0H`t{X= z638lv33hcO??^<}1Ic|JR6ud0r8&=czF3D%-}GpO6Q2Sfe}tXy+;2IGWq%>PqQ&akYh~JNwLRN%#lYbx%nP?-*Aq7KPG6f$Pl_XqMRMd4jf*v^)k8GEkWQ(|pc3U;qlsOm1hF=8D?AKb(k zjQPzR2g_oAl|G3;NM1Zy&ZHtV4B-i+)jztYW*E*+QG7N%+=VJ})ydr)SqaawD}BKs z@uB#IX2|zT*Kx1GN}XsMS+`2rNuy^9-Hvx6cxnP#Yd#0QAH?f?c`c$TKfg-irzK2R zl+qE7x)4Hg-EmKstdw+UMJ6jf?#$|X&o|v1=`p`aQ`l%JK3LdE*};eM7;V>oP5V1uT$5z1 z+02>msbbS`tCKg}JV8;InB6f;qC)xg*jx9bq2ADlUP6TDqstT%WZg;l+2s2;s!bXH zL(qWz?k*8ji14_kUWPU783D%tpwYHRQgYmfvp|1Dr52=+23KWm#mnxGxy>Al$All^ zOyj<6hkG1MwP)NOuidQgoMJ$xzoz^eND>pegm)hx0#Ts7Z2d_j?jQhl!?&AA;Eetn zWN~dyIQK|+<{w!^w|7ZJ6%!Uk6|9j~k%>y`^|>hO>KassLA8KTur0qMtRev+$;dsc z=YlJ}dK$e^)k$bvY*q#;hzS26ABjA*_-FD}{s<_M>ofUU_(Fh7qFZk3adL$rx?dt! zy3-+<=I3n46f(rt!%pDZZt@ggR}P|f{fTE&Zj=Csr^y>OiJpkA|Gbr~>mHeM*-fy) zTJYRhDW;ncZhq41nE!b69HU#D62UytMr;_{$+Af%J~t75w;!t`+Jcc6-SFmXGkmrYq=Z|Q8!b_J`TKR z-?ozN7>vf}vU?(w$+=tE=1u=7?ff7cm>?ncz+>M)z&z8|-tsIsO?`hgIpULeP5tE@ zL3MwAtjb40PmUrGrJz#K16^xNb#t=sI{&kjo&)`w?lHMr)YFT4f;kbwIT1N~k}lvTD24j+oF<^36N`tA6x z%TK|iuidu#sbn;Z#_vh;IFlh1lHv?agMP|@nxqBz%)fiK6Tc>T5A>C_n`?f!)_#%L zX>Wo+fUlV$nal@dLOr}8e^5nxhq=3`niH@a-zkUzZ*qq}^uUMPj}@QA9(Q!BLKu8D znJi5LGigGR8L)a=*)ffhL<_IAmBc6cdIjY>#mavD_?8h=KeMfW8{xt^F0y|l&>3FZ zWoF}WTY}u#ShV;dM^Hj9tqVDwa|^`=9D|RBJ&wc4Ho*&~AqMD{m2WxOo^V(7v`i|i zgk@A?ffckLY-3N1v2L;^*JR_cz83|%NX?H5?i5WkV0eD)NZSiteV zp3Mo7T?-l`%4CTt-)Y@mRDiXQm=Tr}rV?`^4)jXR#w-T4oxL$CVKn?l6)e6vX5*eB zs}K)H)Uc%EF?r0ZQ4dOHzQ`m?wuLh{Fi>>}=;Cv0Kzt(9jsM**usx+k9iVQD8f+Z3 zDRt1Lkk$vQf^qYPCSR0l@i6Rklm`F^I>UWc{ITf&9{N$VP^ z>S#zoBV=<#*#0#=N&GdF1QUu0z=>+~@EjLesT{;>5If|-^Yb<9S31|9?xl+(*vhrU z3CD8;nV+CUk;$Y|`4tC4>;=!+l%V8Ki&$gFCuU#RAXmnGXT*+VU)G_F8gZ;J*B*Eq zn*%pPEl6x9O}|bHui|l6sf|WykJbinKU^tB;uGRAZAUNxFzx5C=tdTvzYCeK0lvad zr=$FtyoCxGoK+w?Y7l?YOBApPDoV#!6BGl!PHR!*N7c284y$ zPCW86ITW@tc}U@x#hKcNbvTbpT)Qg#92oBb$|EpxF_M$xe zLHEM+&0b(#Y$MVk3cHfP;e~d9UDvK&HI;o1wqScm9Op3)(R{W=b3;R|(t5mAvJ9KN z^C&Z(qHPdEyw2B2-<&Kr5vg8J5M5;p^I!#Q<~#q1#dH2kC4MfSoE&y&RHI+_D++ zvxul54v#O+Rm7JIdNy4#tMDjaCo$qAL^&$p5l1=5x(T9d~q- zX+??0nY3(kh4@hi3IM<c&Wgp%~Zl;@SgJ5dTjQS`w>AsZ{1Tps?^jkiU&$|NA2 zmAL)wkWb3EdW5v;8}yIvsw7LhB-<(tM6V;!ybCLf_DE3?>JL z8?2U*f)J2rZEfR2u9Sb-CJL>QWkUDmK1b#*_4sYEXLxO4FP4D^^;u+HWPQe9Ue<6G zGp@=}IDrWdhh*MWb?BNm+FU|{27}m zt8bhX#+F^@bIlh9hT_1mz6InC$LIf0`OU#D_O9+eiaOvs=`uIimzpzVU5uB?HSH!u zJ%+n$ATgLd;Lpdb53WU${A4`sCfB z?hO3T6(6d%%;9{(eKj2|1t#Uh4%t=$FQo>w8VJ2gDJf3V6}n z^~}FhqXDpf@9|hmyY*k@jW!--a|=S>btxlSBpjTCb9G=E)gaB)2S9%dT3ma_KK~=3 zs5EOJWit z5__`V0YbHVB#?s1#y*rlo?D(t+L>Q)#a8Tvz1B&*_c4tvDo zuUP@zO5fB1%Iy+AU*%_&cfZfiZ(U3dW3xw`jBvIPT3l8tria~p3)z-Szd}=rmoQKr zX|}V71jSz{i=df*cW)|cB0P%;s^;N02s7&mUwoXEzOE=%ulBm@FRwC7M^|$&M!Z}b}%Nfj19}~&4$ANR!LZYPox%jpZ z0a(ND$wP>DXkH*3yy%%@=P;IFEGW?BFwNizV}5{ki2%R*ifX-@C7wpKu7>9>566u5 zR{9`rWS7?SNu`>w`NXq+UzJvb+EwgzKCCq1nj>Qv>sxBbHp^|{OF=YvK>}^W%}nhC z)9o%XdYJ-xG)sAZcVFY9A)9SfT+gf9F8-#ElS)$r#>=ZJ%E_&e{bw_QU_7XwudL+4 zrUyn1qnTmPKGrmAuA{1P3mNrSfpqI|2<5rNm3g{(UX95ri#6zp<3>wrynY_D)#Z5= zL2X*7OZFDBwNRGJ<%e2leDRJ%tuXU?O@Gpr8<|rOo|+RCM3kcJh!Py)z|W1!7pXo2 zzrfHjR18IlsYWv^A?7KKZ!Tt-V#`7yrlr;W`SGXvptiX_v~)du7_O370(Te7W{1KH z25iCo4Usu#z9qjFlLBUgjv6>cgDBjeZ6kH2+0%eXdyCf{8<79jK0 zx(;@6S{a0-*U^H3Lkf`k@A*=u{vd-Q86NOn9x$Y8DQWV8Gk5mAq?`0(A^EOT82^Dc zOTDZXjo|f#8g34MMA~y}BV(5#{ysp3A!?1;+9Zx4C%jVX~7SxQnIUq_b4!0MTe4WpQ|zNL*o%yO?r*3%6y6E#ex z5lAlX@H!?TT;z=t(93NV7dH}y$yH>?ff7q4a%s}i5GpkjDA^PM?%u?pdiB?1OQ(tYh$n`a+xc?ig&pJt4*&^?MS%R zyk_$hs1yzjG8KE;HUBQ^j~WMcx8_`;Kq7Jb8Oz3my+no_Y#j!;{dKrd6iRg}-+N%8 zDU)lPH$eLNK*}@xJwwd-r^r@|Xz{c{u@zF;@5k^Z}>C>%j8TLz5;083r*^+*~ zAKP}fIV5AD+sXb6r|i-7=ypHCy9!ow za*E8eP)o_7YVRKIggOB@XC(>46hExPDEra~MBd~XTZAitTcneBPtdG>r{;u*`ycl^ z?dC8i6@)2jO}sXn!_h#qT6%(uZsZB{1EV99s+`_3K$(*0*{c0OR=7_e@JEOj1P&m37~$+Sy&%n`3u~_=N&|rRh0WV*E0Z3q`8N+yMVB z?`IchU#ZZVS&!N;iP8eZF(8@c}sNU&?^p)KFQfWzBb#Ytu z3{}DpNTJ}3+7Le`N5xrZEC83DY5xtU*J0_0CcDJRGIqR-5SXD@T*2-ZhDy_*DZzvx zr%r;3)ZN{#IZjgX_YKa=h2-EZ*4|S-l1L5JwCQ_taHaoKstBRpq#n5}zX8Jbk!@}Y zHNsG>ybk8Cla~fX{0VcoSVTs%)KR zM=Y7ZL^r!ZiJu>Y;e$GN6-lZvP=otXlL*s$vUM^dMI^V_C@D?e?lMaJ zI(&FX8R;PuvE|tY%?yoNG?)$Nt^f>3NMq0VSfJ1FUJftpLyA!fzZvnh==Lj~H-NNh zlG*FSmA=mykC&G2EjM=ago9gctn;OIB^Y~{2r`n&7NWip+a~y%YZ4kjce>6-u_q_S z+#ju^DPnU{%w2jsj4w%=lyGKh;oxC=MWK^zJ8B7|ZT_OC+EZ|ESL(FQdQR6jbmAY|cc0zn)P|iC7Rsiw3{^a76)Or&>b)B#Cw2Nt%mrfZPVQb&#QW z5YUm2{4+cuDgu!EzGR5nXxBTzUT;SxhX{F;Op*a5@}7}f8c6fPu#C0}9Tl}GDT!CJ zDdra!J(hBx(q&JrKgceoLcd0Hbg8f~X9@(*ilPKV3pc(&OIJpV+q{H3xLtd0v`bhh zLk`r(KRy0`x( z-JJZJ`x#Q)c6R=Y;=zIBmvdv~sCz$1ac|etQSuohv8q12jq#S+AKZBNiGG}0r;^`Z zg^|-XVY`g;=U#D4l@A9d((q_VaEy-1D)LB2V^D1s`eLHgJO43gu_sgF=u-UwEbzCE zuo5kJcEgl0G#^1cR5|8xRGkKEEKR=2+i({$xmgV}Qb?=@%1dAP9g)<0wE?&x0 z$UY>5Z(evg_CGn0y&!G4 zF^NB3-oHC1xUO%%oBnbxYFoDR0$R5WNikZ&at{^*>I?laYx|;#0~GwE8D<^YEF^IQ z7>G3ldNln+v0c*=#@$2?SEiL}H>QMzy*Sd;@)gTtwm#chjrF*P0R* zwFSQp^dSQme16i^gQZ`;DOY)547jcjK)Y_e-_Es2%zvquHQ|Swal3wPsL2BxRDpk( zHH_kPKxeFtB`Asv*dbw@vb*0hxId{+^n**Y9NyU&e8=iQOKI;a3T<96}BbOy@K{R)!D)_dD-FT(8M(-ey4U#!AsKt|s+#Xr$$O`bz(No5idU z-;-o#BU4*VMmMQC5XUECSuZ!B8D*P*;G^X`RG*}IS5n|0Eya!9+aj$)H9i~hEkfYL z#(b*fhgi<8y2#=uwKR)G-_g18a&>qT>Z+|QX zuL(^IDUD(^m*a$QC&Hkz`KYTd`Aw`L@*LWlr3nQg&m%xm7{6Is9}{7Zd_x+`@vel= zry1R>dCoCc7Mold{IwP+R53XI_z|dr*&-X4+24K1G#X7ZTXGjl5?{&n;Ld(Z3GhG% z;Y(6Axrpf0Y8uEM&AV_0JoKnQ0U(Q1Qc})tdJ+(&mGLqAIy2B0HQILj#}GAh%XO+m z_hVw?Z803|o6`N{0NX4NKK2diFMt=2eIu4|6x?Q--pgw9O(rrjvZ<@culHy2cB7@)?>Q70wT}bx?cRfv|v+CIcQ`ZZjJvLI9gc4i%+v z0UQh=Q)j3Bpblc^0m+pvlmwyxgA$DN$LI{| z{H0^)4eW+8u{Rd4cI7a8Xx$MaF{_wx>cC>NX|6ifs81N*34-~{?fINm5do_^rztzg zQM*HHhiw43EHgT4y*`zttfXvy7%8`HBhmfn3ML_}3~|nH+zbLKs~``0Fzw zZC$|zdr1q_69IRLL@q+i)~`6>1PL&Jq2=2B6uLw%_H(IPg7CVqpnPe{e#S#Wh_A)7 zNUCW{lPvJkK6NwT0UHZ|v(i|T+1ZwYebwglPJEd%cQ+2Q8mR3^uoGREAKkuZHLhpQ z;EpyoeYu%9SB6S45}uM)h8W-UVnKiruIk-ocY$?D6ssdMfr8#_{#s@@lHpQn$F~YT z{Mym-Ocm9Vf^R-t3Ty5nZiO?)adT5s(Kb?$@Yo3FN&zl()w_kka>Lg6$|kjdmcz)w zbc7GaF~*0IYAkq1-!2)bl!h3v%4N(}-%P4WvB7`i+lfws9H<@)z|BGjp~-7^5{4QN zNkWI3u7||z`rl)KHt`0>=Bk0fLKU-=3smhHL9?^M*C4h-*rNyz_`L!SGY6TtXrXU{ zzF)MUeJ0<)i>aUV`|1doX=n3I3@zGJvvqB_YiQ0X;D41lY4#lH6D&TPU3%X=zJ{HE z{_bSw2n*10@5r<|D&prZ$Hw_J>vdvZ=I8v0%gp$p?=NWHZ+F9=jG8?21};wYqF5hf z$VvzVG506P$;e^cuR~|3YmtMoPUJ$Nstp9x{MKM$31bWrsRMki?aQ8w@fmfZgU$!}}2J(M;U zU*Zj|Zc%vs%3LCX0O<$k3R4h+(G_Vu9bWBJb{lZOahZqUeN)zm4+#N%$4>??{{|fD zSf1eB@P2y|ybZdV_{I7PtmD=uqvAQD0heTd9-2=^&sLBKJSsHbF3GoYqCw9e!94D4b z_|DRclGuGo$dNImR)1HMj$ai9NQc!sJs`ymr$aP@?^v=;wHMdcOpicU&`ko+gF4{W zzkIkS`8_s_wqxO&nPVYjKwCVBiwr-*dkJ0dWlMtpSJy$MOnQ`x;0I4{_^;Q%*3 zg+*-Bk@Wl9w8b5*5G1?m`Ym z>>v&OrwJc=P^Zw|T_M(mTndnqMH&jNy(9@UC?8&mtC*?;R(uFI-CPm}x+cGi0dH}2 z=CSleGfkUWRT26z%dQIgq1 zzbl}`64sMR(y40?TT|zc2{>-9U!9L9vAUR(k!XTeNTX~{MJCeaf6RVa^2ISB*Wvs@ zUTC6|lUH?aY?%76e}_i8Fj_%f38oIS$_`4&#os53`~k8P3R2H>7SmmQ13QRsirUt@ z;fI4enJ984HFaaw-?1x!gM%lF6tfc_i#^*=2&EXkuJG)QX!39>VyC|xqco^rdL6lM zas^xGfc*0=F{B@h5T6crd|z-wcLqyVbM5AA`YChpMA|K$!7FKb4ck=EU|GbGg*@O! zc-Cubo+z*)IjN!}4X-#VX1^QJ=OYmynNc}ic0QJ;&tX?AU;&8@9=EmLd zj_!VB;L0w8_<-+)kuzCy)i36~b~=4e9w{COMg1Q7$M}{oqq3~-rhooCJHV+Q?uE>d zndg>$Qy33&qP~$($=TYnsa@T4ic2`Ru>>f9w?Qx{Q!8K>NYU>4BH+C3E5pY~tPOZ$ zL1R>AYTQu%_^7M=Bc*6W@|N8tuV>%mY~kxycQxTyapJm=BvvA@${ukcVrR60zX+~n zF}3UQTyac1u@+!@5!Zb`ZWwiDyEHE|zt;27{i*vFs@KD{2$EtAxry7OKv6n%+E(MA z!L_uUYdwFV5)80j$a>23(i3b^j%=%HYou+NikZYpmVWlI#Q>U=WF!<+VP-p>u672a!E6G|7pYY`M?NKn& zg>U+1Aun%$`miV4yq-x6v>*?F{x**KRvHcReghbH{SD6eX2MqjCym%J1_G<Wi2^$}~ff=r566L5r9pm_LG@NI1 zp(*8tIZPMPn26ZxDIc43D*zNd>U^hwM>UB?JJ3oiW2d1_gztbW4_0V!!E zOUPbY=((F=eG$|yZ=X#c4uOeOiW40qUvFB@cJ$qx9Bq#}6kUk+qDn}7e20QZ+ezf*Tv$}m;p(>@Q2GM}+EXI6$}p^CQUwyG4; z9nGM@3Q;Hs+2UJ-DnXRZ2W6>i^mmvVw_&>vZ}oOUfwr<@QnsJCXa>XN-VIPSWx>vm zkK=h4W-~@I{aB8c^9*9Q_5v+9x3`MY7L;&_hd^GsGUG8`@n~7sWPA9C5eOJo0+CoN zuGuK_IS)lsjp9VxV07aWj=tBjKfLJA#9AM4b8F)Mnyprv&4yehgRaAD&1U~&NCdir zVERjSAR!W1N2+v}E8SAeDTqB-!t=A?8k*DL*d`O{a(lGU#Io$DlKn-|XQ2s9;0G>e zJ#!SOrCL=krl0OOw{Px?-!l;7yG^=0&O`Ek&d8kQ0zgpdbmdiKx!29HbJ-WIC=m5ln$kC|ow*B-SAWN*0LkES6-hzQ6)FB3G&`pJ_McYXt^`k3ezW=QTAzX;G4x=5FxS(u>1$Bjd zK-heDth%o@emC2L&;o|AQ{o5T_hA>Pl7rTiNGK;c$d6p3s8q!>CvrM&B3ZyhE*Kyo z=E7odS1dggJZ@dK*h89fpa8y&3g$bQG-g!}CKEB<@>Y~nX`LCnm(u%~@zaz7j&Q^? zE3t;74smU_xI;fMW18TUl7VV@zmrIOru0Y~sqW~MVpRrQtoVq6i7X_qiAgp%RIm#c z>C6on&Z)veGWjN~%eRRNQfA(c!YC%(d4GEO?vVX05{iwZuHi$g*Z1Cam>-3FP$@PvDi*{KLUw~9Wp^8IYRF#z9;)78__f)Oao^xh)rtRyV z?m1YL1vv`YB*dPc=9@1FKG)X*E^}DmsG%PY5?>$~?si3chy1gN$anXMJ> zZ^lf!xG}V64$G#7W3>EpNVMfH;ufEl54u9UZ)gU7N(6kCmoMS6r*j;8mp<6}$V6&E zC*_E_SK#?(Y)3c=IT4A_yGnGn&ynUIVU?JBdd#R*WFX~SpkkPu2n9^Z>dOjLu7?d> z-#)-U#3i0e1_!s52TAGo&0IkBLjecY}mx&9V*g8ZcuT~Mh-oHA_f|-szh11|5 zgu=N6`SFIP2i$dUT&dSg=vXx=F8;JKM>+||Lbino^UdesLhrbDm?qpk5CsC-VMsOiS z@XS#pzF!366@+nuq$1~Gv7_xyQK z=qTPuJjV2udw2N!*k**diy-f_@<;C3#(UkKM#fkLZ-%Db)wBWOLGW6P;;^6IJz>=A z?o^4Wv26#Ak&aA%ks_7P09r))Q4p#~cIp_**Qs>atjUs8O8vD{=)#n^Ppf6RAB;>F z203-%peeB|~B8nIoE`wqr!^ z)Dx_LOml?Z5w3VP*&I@Fs;n^S)^nRwn%w@-W$*6}gd~&sS8_duu{T!=irea*K4@4W z=bPofOXOw!s~Cp{GZU6|6Bz1CL9;O-9X|LMSt1%o$t6LW0}g|=*$I(ufoz#Ifv;q7 zhqN2K!RJSY({7MQ4N}2V59vlq=dI$))@L{lx8 zOrD>zQk@YSLMa}RGX)XZJb-fzx+_i$z+LZDxVRB{ykHJ)rorj3=MfeGxM1t)D4OZS z?xWER@uJD-6NJBI@Hj2ZWMD*p1E>GR#wH{B^9OmS4uH89hLQdk?o!;&RI8{q;E_^M zn+@d33$}J-|Mx2SsAE2&b5Q%2q2G0-&}3TRgGk(mNt5#zy>sn+57AvyxGBNJM)1Z2 z3l{1jEb%GGA8x+tXTa>hX}^c&A|Fi0esvYSx$ClxIm}NFdb$V%?AjRk>)Mc6BO$;N zOL~IgsWP@LL6hZ=_FuD85#CPqKwk;B6{?rPiLk`Pt($O z-57hG5fzM{U6mAv8f4-RfTSk~3zwUFR78PlzjdUObRz);v+QmSjO zXb_|My#ob2JYI%2R?WTj%Jh0SY(a#@!i>?-kR7z})<#8jL)ZK$o~9=XMLZs6+|&7n z@9Ps44UJe8QuT!%PK{4LI%5|!I*$`A?sv>2EPVl1*@nH7fSVs-fLPrF*XKi@loDtr zMN^~NeiaCZso*wXt_CK3KQVkhr8M=k9M+$@g{jM)XD1Zd<%vCW3|Ac!+u~x3PxV-U zB=NiVMK})8tnMS91Q&9h3`p0XEe2L}r9L#%c3t`HZTfmio7#R}AeK!v!gzZu&az7E z_L!&OwE3Q|blU(k=K7Xy)|ZHs%QSal{;lQa1KLOC&0NV}0);`lkNJ)4@F~BEQ3Cf^ z>YblRhtv}#DvuV`B+K&*yL`Q?Wjfrc0A>M?U=865VpviDB=i*)eme~!d{Dw)OskPY|xZ@-NKis#HbQySk77YrDF#UgT%e4@xUY=j)VsdzhfJ^NbUo6h`_Xv z09?f{T0Y|D8ANw(HCYo97=Vj&dL$L*?-04ejGwt6bXb+QkU?Nv7JF%qFEBq4S(%+b z1vdi_k)w0=LHr=ZFdE{ap#E%JLNSI;4}Q+vVK# zX~MD+W7!{XQ2PfihF|cvU@OBiQjl*gb;V$Yu7~O#fjl@P>41G=?l+&_U}se3zm%AU zu5?W2$)`tA+I%^e>u5!Y&yx5PC#3PauUSQL2KmWUe$P!O9}nJihptzZbo_Uor^=m z{6W6IJ%|jJN$Jndu~aPT!-(d2Mr7k~+H;5TifVCM#8n$nCejVtJ@z}QlJ}W@v+Lqx z(?#jum)*PNq`P%pn)hL{LZRe+IQ4ysoXVfE%v>!^t=c7VDKMxtTjg(T`yye+5)qQ!&?AI1q417lXB- zJdnf36M^JGi>0qWtLumw;>S!B5ke-c6vzL{@gn4xvI7w;LbQ@~`>T{k(s-r5!F?b9 zw?JZYw4_4C;vj*B90kK+xZSNOqA-R3YSKEDm@G6ocpK@se&DcS2=d&0dDLyY3>q?B z^w{>?k8A&NoYlCKUhbmz2BX=kkDH9JYRKyQ2gS;69E)~px#JPe5H>~5W#AAWD7?aT zAax_;seojRs$Edw`I^Q{uCeFv>{YVlKs!AW^Rs(e!Tm98doK>jXDpiD!^Q4sAvaOl zC1(%W##)!-Qd8-I%~9C`KCYf8j&5w~GMUd1G19=vqjC40m{){VV!gZ2Dd_~pH#3r8&jC= zYaTwogWzUb$CCBj1<*U&X|Hy^ zgQnQD1{xXh*+6DjKcIAT&#dfY(gEATjqB%^X5YdFev7CJ{&l;Di{hC#eZ^2WXrpyN zkXh}HU%LRAQ3%gJ=rneo^iLbKO}qU2TcxHUITUg)cP3vc@11`cx-uBl_>%%$PV2hE zGRTk*FnK&5{z^I;qBnWQT)r&6A@zS5(iUpW1 zmYM#zy_Jzh?^H6UQ%YO2dd9Ec)sjk~Gx6Jh-3kgzbkcMgZr=9$dHo&9f0O&Ek`h(+ zM-1(kCdHx-M`xbi5u`brCB2$q;!{#P+YEi*k(dS!y-7(JoWA7yH}W7F$ke_~a9 zj9OE4=PoJ!6xGuIFDf2_jB*NI;s{XHZBD8Co>2bQFsG%AyKRwpsDQUI zjp4&Y&h#GPRqp0n{q$DC^x9+zPrx(R6NZB(N{Tk4juRS(LRNcUt9gzOO5_Ve zf@wO>cX`!(Xlu>qL+jTlEvu{co$Z`Dw5rBh^tV@Hw?u@)53~^>$yB}5)e2)L8-%J~ zh>Qco_AD_XGzQA@0?-C~sU?@pFh_EPLqbWq_hntlNnq0{y#4q2bHf48Gz|#fwM}9Am0J}DFTla-Z#_$!+1tK!H+%=!2_SxapE8P#R?_DxvBmT5b zAjj5<=%btJ-IJ{;0^l%sn_|QR8pZADGL&B$HGO+3Aw`Ph!WVT|7*BN4Q{q9LjrOo* zZn^nV_S$-}m>7MtsU_!e1Ie2t$Ai>uhpJihBjgSJ+4LzYzdTYOLj5tHi@Ixcg&{QM z0Rzf*Gq4aAE;t)I*74*l>&LBdtRg}!qPGLZ*IrWC9?RJ6xwI07jjs}>8<_fDO?3c4 zL|Ii7H5)#dYS0(|40WsbMr{#4s(vVEr}-*9H{j6MsidgEjI^9&=&*0JMdY-7)-lCT z1@Ep|svoJWLYHjhFF>zUUBlsH@}hhAj8Yzbd+J(AQ%_LCtxR!m;XmE-;ANc=D!O2& zxjgx=Tk3l-uL~}!>Uq_**I@E@a<}N zz1!v>;Xf!YOA)gBLqsbtsiE2Kc90~Pf(8r z%JVJ~4Cq&~h8<)zc)!Z(<`=u`=Aw+aGlu)y`V^$jI@xWkEfx_o$tPYmDS*BPnVq(iMIT0@+NG!lo_v*!w1puq)n2+SEQf(H9h4dE6_D z8q!X+?bCQxn42|c44xO^qHo?4hSjB;_aoHmZo&m_(OzwvumnQ$x%pA`cdQqFWFH+R zshK7VR*p+ZR>4%nsU{7S!9>9a0&wY25@mi`_#o4S(sA}s&39`znMnFa$`$Zx7>op>7IsBhEtAU;xueC|U~7*`|XapC!kfFB*^ zl3zYp@V!@4epat9zbMKa3j&^iH#R92N)p9K9pz&Ku=yo_Bh2SQL zu}?4KHp8ucsl`+nd5^r5dW0$9XdMJ6|KK;1_Kwy)DuK!K_o^>T5W%8z2P_2WP?|p& z%Er{yGg67V{YD+E1uvyGHdeLpUFKt?JL^ffdzu9j^#2IHejG zA8vp<+zkZEpVZoUt_l&%R_Kb99eW7mfR|IzxUOjAD=n%njhzkD-xN)Zqkg^kTWhoW zEd;g3m@aYQmluAcGg2Jruq=oL>oT7)lj-Yc))+S@3kGdso7jP5ND$HTnQlRo2feWO z+d{{; zXO(c4r?zE6-=S;v-NgYNvmtI?H~h>Zr|fDCVj^P!49s3Sc86}iKAF}k-5)`{d73N= zN>K`U$7O8yNQbQAA>k5C!{R%++bRgLF#N-ANdGy~CGhYjV|aaXCq%4P}CY z2C*jz282F7N7H_^QUl?i3x_Kya;|K}9ul6eE$QE`aAMKO1Z-<35looHqMIKsNVoOI zq#F$Kj<2OVgU^Fr1e7U?w=Gz(X!->KZ}ErMR>h+fPw0QSr^=`{tEOMx8`06KlZ(gd zJ$~f=Amfy8J$oYsy@~weu=wNsLEucS*_WtfVeYTA4}48J9s7GXs2B^$-iC z?|z4~lI6o*Uszkl9w0w?!V~&)1_V2D&Wm`=Sg=q#AEw zW>7j3DSy&rmTI*JRJS@dE`I>-Ez={l&)ftm!PNi;oMLF{`xuK)6zS&wl3#3qzej$s z?|n>N%}4?h&OZ(kwLFl#`YqB(;Llpq77-bKfA0e9$v~xj{DXSD!B_Kz+LoDq;wer5 z!Ci@lelPh8Y+ZvVj*}BV+E)Kx7(V_4I{18BGeAPK?7G-mbTC=fk8oS#(dDhMd7kF! z^^r0Bsy9so^n?uC9fWu7N{KZ11^Qh0HfSL0JtKG%XK;e}n|NdYXjMQep6fb<7nz$8 z{3LO6CL$htIZ1P8{iV6wn-1**Z75*IABDmNfnv2~;EfmM@P}-rfQv!z4`<(=vW>op z9JqZ5aLpc2Jza`n%kxPPu||7q-r#_^A5z3#jV{8Qv4VonfUTQb;GJBKM(*;)H$64#L z?YkC+o1t4*kgm{-T9eC}Y10unHt5`kz^4UnaO1dlUtKlL*bK}C(u6nC`aCXCJ5Mb;?F;aQvNV_zC{kVkBM zfF$P^J0LRz}wvnCjI~!ZeI0)}7z5wtp&%$`DSg$U2%_of_(kWi$ zvI-^*T#+YAB|1;R$N)7NvPzQ92I5R+PMO2+C$y2W@P(-T>FlzcL8M`mfWci^r88^@ zpLQYv-Lk#e$GmXhy=fR7JsfflVv1DsuOduY)z-=Or)Iw@imzS}btsl;$p9wluxd0Z z`P{+VaequDIfbn{eyJo(pz%Ga^2KhWZEO6@DA4$YWqkJ!-RD15xFVQZ9uM#Zv`2XF z?)?u|ATz=?j6C*{AmOC}?PEb#iQ*ReHc84s`Vzxtu!xyArqO z@R!)8-~sdp>+wk!?sN}d_UEJJ8SHw+P;*)^%{85;Kgu^ppNC}b>5mn}QNAwk5U=DS&?9n-U6oy4fW6>X(jVqJ%LQY$4C3O8?%8N*mzcN zZ$D4+;TOU+E8b?H_pWyKOH?^a#xv-Yw`I|;cAtL`AE@K2V`I|`1#=jzJ zKKVpUv=EuUU$lKs0n2qhw7cnm_m)9oG}XpQoQq0LF~sAu7W3G41sXphu-p)%3Ws}r z(we(d<6EQnA5tXr&A&xuCkzg9JS>l~P_z6HR{nbRWVQ#|B%B}^flGF2=wBY3 zrIW6JCihr9yCJ7ulJ693r))=GDbJcq^2r3EkDp@z<=)+2izvFWG@k@zIRgO6m)(ei zRtv~l@F71RL{~T|G3}(>`Lz4i4R8W|D3#yNnSIPa_73DB_kM9z?B@lv*vHkh3D1O^ zpY?akAC2bN2;XqlW0Hi!H{jwUERlD<-nJGZ&aw6G9=)dp%{1vYpSR-xN8Pzhrgw$>e$=cmbz#G_feA)#Ud&Em@m*EeD81U2S?F6cZ7@tcv z0fBp@z(0!4ir5#B$=+MG<w&ljWE#)7YBV~$#*+(PHs7+OHZi>XoPVJ7k64&1N(VB9oH%sNCoWq zD4TT%PuEe6=Y%X}{b&y-aOpLLO$oi`su0ebML{UGau_p!2g1VkOh%@8mfqv<8qu-? zmZpjOC*464XKd!PMIY=|TG&NFD@fstZf(c82Jxa!q>wH+MJkwhW?JS?mj4*L#E!o~ zv4g`!`bCEf{07^ljaCU?wsciwzlE@4CdXAn9TVBfg`B?}iXB_%!(8Yxie6Y45NJI( z*1mD0in{GM0nDsJo@wX+bxGWD(@fnKOkJh(;N4A1aP;|^b|03c(EPl=vIYQBq{zQl z6RmiKptmb6me>(rBOmsC21rFX*oU5;-x$w-pjS3lHiY~gaq;b7F6U0^8rwIdqTWPP z#zg03?O6SwqXqGN(@9p{EI-mr3@}#Prn<}gCPW!^PCBBBVw7qCRjv#ZIQQ<@av4L< zc7g`YWb}8gD~j?vj(^JPU*Gq85L$aDS`V**D~uw)DXyzUR5*hfsK<_|5ms7-M{Qcx zTb)|*i}jQ<5fs$0fjUEoJY##&^mMDX<%O1QQ`|mf9lXfrB8C)B7FA1%T8L_``D3xB ztD`AvEGJ!0s_6XF-fv;g@>I83k$=&!IWCsP*-&wEgwrFwB?QVPcLY` zJ6%_&z>b{7A@c7zOK`eJdmfE^gAXJpU5E0Gmz_AoB0Auh9brGZ< z)nZLBqL`~Eg6Ou75MStYwcrK9+!>q}v$6cn{t`!u87)Z`Dj{_kM1ynVJNJgoA^8lv zSyXg+6D==!#7cC|J0@ARK#||1L}*HaEfqqGsy^~4iA95Kx> zba?LGGhVoC4DT9df2GbR1DID0&2J+mq|U`^vLJ-8a)zG^GsGzSoiSmzor3G{EK8|W z4+isZ3)2QTp^S(+{pxF~EKa4jVmRhjiJ_Gh!D2a1Wc6d%))xD~ZV5Q}@t3K@ov4ad z^y(1s!ga0lg#4&CPeIR|0ge>lt9)*>eAaootg_*=7349qK46}RI=ZwNxln{qxHJ}Z zAVP#ehJ>@6FSc8daIVRX60f=nhr!oZ2I-CKqNsAucujx>e zknjqJe-a6M3;5H{uK?;ghob>Lk7AFjP54UyRfBUQ{ zbxY{gW@n4})TzPM3#c=#SzUOz*{5eX_k981p4f`P`55k9e@cW~aG1XKr-%)^{XF#A z5o*GI-OR=5ZQSmsYP#4|dJA3^j+5RLmylPKB51y9Hrc>Ei${osaw5kE#T+dwDnnnE zY#Vs{Ha?-WH<2YY6AL=(j8KaZf+%#tspTzD^9B0N5<+nCkYtA#c;8_IaM5XzdI+7q zARqNIDG38PaS*j5OXZ@}EwIu*Q5q;%2M1f<85AK!uYv~=R>ort79-8KkENS64TA0v>dqb*R_;hL7GjcOW1+4r&287PQ zMW#2Hl_(H4da5P*s_UI|s-pRuW9n+XD4RBZU>G39Bn-x}$(^AqtDE-?xiZmPkTg*} z1dJFU@<;6jPV1YZ?d2QHSzW&*{zJM)nMN)W4ETV#N<_5u^G##0L6{fnZkRLCL5w8I;QLX8vz%88`$nKfL7MhIC^%~b`=F4}*l z=T2S?J9LZbo5oyYpeJX|9YR-pi#f~C1W{P`{n{Q01Ok8MIN#v|B(HtOy6>$EJhcC~ zA;japHs3-qUc1oNOfhF=VaHE;4S#D~tUdP8PzUFoX0k8!ooJKaD4|XlNVbV{$X{Ki zB#>?CVTU9Igc0#Oii<%f0sRMa2obk~wfOcB`4?kH_tK^}W*!FTT^319g?J@y1h_Lz z-joFJVHp5HcB~EP^_ME8&;~}78;r*m-{_d?&`e&-ZcmWFc`=Z*uL2oFK@+a=7BjgkrqoU0-630=5>%? z^Oz=;35?=a25nAy_=>_Jb=+j}A@m5iaLEF7KpU-L9u8TNY*imoYEqBF8X8B5gvc(G zxG;eBIrW1>`~vP9F?#$t;mD&NNtJLVULPnts-N?#hmwjA?Bt52@k=!ogXenRzp0|> zkcF$Na)g;5zs_ENw@+J+)n86{@#5#>`s++DJb`MXL${#!t4|&x<#6C=vh%IK^f*SY62{KvE3b!Z3ce z|3*xE*VgD8p265GvAn2EWFL@ek1(L zZJ7HX3*J=tXafSCi{5C29E)%_H8=G-f%+}^dw+ptzRA{VX9DF>i0UhQj=cKKy?YqO zreng0Tb{^POed?khNZO~apnx-tR;7wPu=pnPDQUu+#+O$dP&LAI^QA|s!px*pb{oh zI7MTr+G99yT)T*zCc)p7z3wQUEN<64iout@fr-np3qBq#T*xnJbkwnW_Ws!wWNpXp z>oRF8Pf>dEf^cn@5PU>Q{D^#9j@XSn zV>`}IB#2V0lYSpU4o@cWNDBuwrgQsYnBhz@8$MG?er96pn!TXzfXJ}>> zY^v+^SHS2;C+{hia{5UMn_7h*=9(DtwGD{0OoMJBy);4!%heGjHIST}&|p1zUuhv9 zjfvyHLFf!{!yaWYR=_!2C8R|$HXf7%TF}vciV|(-u@L9{0@!U@$TsxkVgn)gHZNzC zFSzSqPO8o*TR2=TxR==cFmzzKz|~tj$zAyHD=SkfB%LJb9xxS~$5#*F7Z_!z`x`-4 zE4Rf^$>Il9Mws$BN+;5*pQISzl(0m)PD5^l1JZXCs9sQE$}JfBulRr6duchn#0ldH zfk*Hh4vl0muFir3Hhzo^L)caKM+m4`KP9 z(Fmj^DDP#xAM|m$|MA64;I~f*4`dI)dlhF=vb=@EWt>BHm^XE0&k05@ia5g9$O#nN zbrl zpiLw7D}1{vszYqopGm&|ty*<$r+*f_fvH10*ukSn@Lzr4h4cQqW%|l1W};=pvr~F{10x*pO~hw|^se>#BwGsge!IR3x3 z{|A~ew)a>=lx1LmI>7Net*k%~RC3m|7XC9N&aRm-f?oKbcel{(jcbY`gh+lJ@ z@zQ@z>RQ7M>>(*)8%iMiPMhOhO=>65O#q09NXH|>ivphGDt_a&1F2{>ApKalUb)TK z{RC6F_ar>ZbPv`NL2f-#E6%$m97}f_#L5%7KFed})m8mv@2#7lpx|bbMDYM*=vI-#(74QK)!$~Qh znjquzPnmHh%OYm`*P&u2Iwn@pLmr)WDjLU4iR0!JdX!B&-CkNTN;>ioVju4_@sQw` zMTWZrXR)xHb{tHbjBv7Ck(DlYv#Q^DXO{Lb?O;q%T~2(ojX48I!lj7J(&ae4x-8E` zc35^*q_EKrsw3whW}|12zK>z3x)yxTKt&T+PXI{DNESa{Y-lN>j2yH|pHB32Z!=nI zfO31k``4h9FcVW0onJm8oUrj@6R^BoU7P4bOkKKIAbbL)Gfldt@#?fiQgyYXta}`i zqoY^)xV)@f1ii0vK;9$%3Pe?FVg6@v6P8~mHS8{6Of1Y>LP}Th``()0qWyR zcN|J#^oofMTcN;$a#pv5TxktgGCRAInfbM_^IC33rXlm?9p4esyv0kNtt}10v{VGZ zS=TNxjQ6))1naCf@v__1zYYz3k(G~PaCE@`GBGj~G49&m>_o)}(yR4{nrj(VO3PRf z;1ld{(=kwKHZ&wJ(B`;d{I{X^*ZRa}%B z2YWxe=RWN7{DMHwz8ix$CvllYO0Cuc`ObnAc|Ot4Pa)pq6f>J&R@M2 z_PG;8M^{oe1Ov3SlQO@3ov-_##~n;8?Z3oGYtQ%pPmZXN|z~CS~Lm;~j zrzxTg&hvbXO;Q-I%+>y$4cwQ8)-eQUk7!Qn!;+JMj0QPDH(nAf6^@)B5^C}=q4&%d z+iPX(QMzfX;Z*(!Tc`J*M(QcAM8ZuH%TnIg`VDpj>Eb36Awh#XD2j>F8uO|Q#Bp{% zrQGSdlbx;CVpD8hMs4~-4FvLoW~8K6bm5)3tMs}62V8_dTL;6!qZ781xi;7B_0BOU zEn9-tGsTf?wY6Qhrg=Krec3p5biD7=|4rG~3){Qf;Ai5(pY-hk<8>*mO9yP*ptC>P zHVrH1G!oBznOPiCi6W?55EVn0-OPQT!!8l?WAh}4SyfhEA&U=WV&cwn*vZk18nE|= z#O&ZKJc$v_^z}GU&;5B;6sZ&gJ;l|Tz?G15=2h9hgVb;_B6Ca2&t#|dVtl&c zOAjdF%**FkCne7Q6=9iCiAfdkl*U)&Fr1pshYV66){1%b-dMvb;*NOXdFP4k} zNEi3Srw%^tH5o%VgZ0YQ^~7Yv>7CXc>_0~=dNYz%Yt!pM?GqFAPEmlLpPrrmEH)5< zfvC`b?Uyi>9R<5osEBy;C7Q!j=&oP@J7{&k(ZF%Z{anzX%4@CGE$E<@ZOjLjyslxO zv7j>IwL6e;`ODd1D964ge0dF2PRSZlC4!9{dFb1~WN~xF{xWFflysxJavo{hBVty& z3FkMb1ML}2vwwFVED@de+6|>^OzUmesle(E zJgc#BYL>)BWQ>oA9%lGi-KEj)-WWJ+vgCjraGOU>mg?!=E_S#1`iPN`Blz=Kxdu!} zCyvdThT(Y~pJYWA{Bm-VB<7aaZ0xB*6?9P{k>6IrdFYe!O%yp^Wuo@}44d+|P$)s^ z)w;#=@jYjrX3L^ra=U+e+R&RMrW^2XGpxf{M(`a zV2gE*ipF z;!E`i-kYvUBqukKHy~mnqR^V4d#CYqak9QfJxG_KufNtZi2vQJrtq~VCu=L}Pbr+zF|3rCkalOo zvL7Q^-!o#zFW&kDpO`={h<@-%Nj=1+Si7D{+o~^h1|2z6VGP&Hy{~mV!251|wUNNd z(T*5Bhm=xx(AJ}%mMu4VAqsh{8%1k@T?zwaq=KWp`O!x+tm2%=?$&DkGrQL6zGdXC z_eklf>wz|)mD8o*^Ix}n)MTM@m)5;U?MWx2)$1q)Eak)--7gD|!eU>PKa0LxkJjwQ zlm?+^O(bMnl$wD=%=oj~jGg{T`Q1E7xM?6VDr#$W(+3qMwkX)XVDHt0PGeXs(FpWg zX<_MU1{?CIK+{#KY1<0~a#xyykl&74oL6kV2>tre$_5jDs(q49?|7I(*kP9NDb&18 z+$)k5eWuwQguY&}-cXH5*)Gck)LNnNS9aSDNLX;B>O4Vcpmv*^4d%wBTP&#XsT>*6 z0}+BxcM`88FpBgP{M2i6R0#v_@JM0*Q=Hrx(ex4s_BR)(`3H(0Tsbm1XN`lUnALp6pc-jeAC@aWvGFhOF_95IecQn$cKOsn$c;e<$R1^LkoZM$rB~;}1iJ!u z8usq-En@Jp#5STNPR*LdSDM zrgF_8p)RM zmQMsV(6o4W-gs(zLXv7$5BzcLL1$^~nX49oXRQsT*DLjJ$IzP{Hmi(Vo?7B?sYvC! z$)~5DJ8_yl$<=u9Z%#$vD;EAZijMp~tPKR;jJ)(+lg!&u?z zR6&iN^iE=AN zVB$4r&GPI%W)jRgt$>fpM%Ot{P7(vqx}O&kFZ$eH2XR#fXxF#5_`-|@!uWG(C2Qtv zUp>BYZpkuR9CZD>Tg}SLZ!9dCa~Gpd^sX%&4XLfgO`o9S&QMMwBAVdP*~{gcYx4qZ zlv4&d>QEe0WHmvVEx*bEm%mO=tCPmdrzL`KqybE0oP{f79g-8vudeRbMYay@zz zaCHRdsAwsx$Kup!&ZEp^k%qu}bSz*m-|Y2iO31H#F27Uq1we-i?_|_jX<9=-MHI6D z<~V9NuNg@P7*YES}UcKbR~tSOV9K3x{zsa(;A}Ke<;1GU1?((!(cFeqvPcU z<<6zTyVi6z9r5W(K@Hh+>Zs8~VFhe|eXZnY{1RWW$|b0Fkb81bms0=EKbu1f7qO_c zdDFMDtPFaU4uj{AlPPg%*GqsRkj&O1#g~?W{IjkDIH4HB8oB9X_x(m`{|0ML>NjAM z06X?W#@xQNm9`l6Ubd8d7FIp`Za?JF1!PV%RN92o_3r)wVA7!#4ighCFmGW=HJn#; z0~qY+*nkvBLxfkt!Id;)bJZ+*Z&+;Ax|*`^!qB@w^u^Np0bX3@s_8dHY}(_4!SAKk zN7}Qt-9M^{V-o&S6*fHHH@pLb*iIi*;)=2E4>-5-YuJ!O@?%MiKd7pndbVD;^03sj zAZATqr;Ul_ix&mz3uH}HM|w7lM%=Y*fYgRsw9-{dI1L%$Xt}xrF^AUl=N=lX-@b(m z56%9KOBc1>`?%9;&Luf$JbuV=a zX=2{<-G>2LZ&Uq2h}X|8X*7UyWPJMJMn(3(kgV-vd1FWYL15B+^psV=smmdRGZ-#@g!mh9?l%q*en?qGR)g$;AeuT z5D3Nw4I{{>Cme4dd@V}cgl9|PW4`T7ru61-!Gqb#PQxP1fgFQ&I5G>tx|!BS%&O_Pm#Ay@}H$CVNUef zt^M~@(}8wqaF_-2q{r$kJ1RUqL%;v2$vZ-1i}j~xM>twrSZu&lgo&wqm6nQBHcsjH zWAMzokhqjy!j`I`n_WFI{(SAuvgk80ClE7>EJBY`O;`K}g7i!+q9#vG~5`GH`P z*utJ|4?AszsJ)`9x$QKySGJdj->XXvuRxv23u*JWoP?>LFNgm@gIb#x_O;d*CdV)u zSV)Zehk08?O1WxjI7<}bb)>uhT5aPBE)iK&X4_Ccu2|qlc z=U%^iJw99tQ%%Dg80u~w94svIUD;-MZ?@jVR{X{lM6mQ7EEbpGIQ6wXC47j?Kn@&#a*vvV&XA`l!74g`ef1Uxs4A7 z;N{-z3ue2+i+G(yuWyII5I@c9U-EZDr3rU~1TzcA<*nA;4%^D?*GR`b+{Qt5ej_HD z8iY#_Y)Ib3A4y}G_kSnTwywRKk=DgkRAQr#v!)q&8Sk1+ZRLpi`Z^Ghul>Ye8ojzx zVLQ3K>j!%*eTgbLIA~Uvu%p{bV5Jfgj%&!S6VL_KlRSy1-kocsnYNfd!NbQ71D>lJ zbys#Gtw>xbnIcPlntFOJKq2?b3w*Kq$1Alhm{a1fZfRrGtOAcrdT5wa!)kwQi(7~} z(&y~=fe9Z!jy2^Ab2_r;-cLap{QpKcg&(`zoKTH>Vqjn_e3`7ME`xfJpGq$9c^cTZ zRNqyU0VMVB2ieY?VJi&E_Hs4OHpgD-R;9F5(+h9J%_ux9c}dTIpg>{UG6Lh`hi-Fy zlurtqJs+J;mxGH=XsO7muQ@nRthTmn7(U?FGkqQI$8qS%%X@soWbKQR;wMU7r9}^0 zNl7f{HiiY1yI;rTA)D^O>%cVAS6mwBO%ko#NtZHt*J(;=Opj8Vbb>ZJ@MQcrlufbelENv3} z5O}r{h)bP_l6Qs)3wCvEj*03{i~IkX9d!4H5P!=u<#t&0;|9aFSgqo09G+{1I_bif zj-UPR2pLsW&HfFY^FOxRS^?(x$l|#N8b`of>=}zv|3KA18HSG^*&5?g-ah{le#aq# zVcON*dAfzc)mgw%vFkUH!KW>9cFz{~wb`+voK-aUj13$SmEQEQ2vDC%)Cs0un!WeNwsRk`Lv@ASobA0~CdY z0|b#`@=F_FwNfnyrH`M~Gk{iiz4;TXrKtA3qX4O@>Wl>(;v=xWSR7e1gi9!758j+D z^{34minv5WBMUC}_h+u@A(8+d&Q?&*ds*e-NwI46+Sdc2tV)Nlt~?j*FDS1e=JQ6D zea|UmgSMUBps2XeqC)>MclNT~eEv3IUC;cENG`D5Zni?Rz`Nae=ZQ4%I<@V5uKid# zc3Ac~8UG^@PL0gSFZS^A(n-fr6uA8Kuu9w64Is{6W9w@Ntrqvnt4n?T<*>VuBGSMO zP}Y@l>1^lS*4_#1#jf1dTmLkPzvk3s;`Vtwh_pCdSLmLUID}lT%i4cX{zjU7f7+ny zesOxd;pXd306YS1kBi}5Mb|T3;dKe#zQxlAXfzkr*pf$(2NT4s&^T~g1oES>+WuhSl z!p<^hMuQ59QsBM2w)V$_xNjJdTgc`{TM1e$7x~x;Ae+tGbfYrth@tRk9WHpjFZrH+ zH=t9)gbes|lJWD-+j^vvL^2`&?1z(AUgy^6?t#uv!G_k~(car$A8jkvsWEQh|zBYi4 z9v)J63|MyShooB0#~+F6s`TCWqV2>o^5||3otSe$u?oBaaMtz95)P1 zUm?y-53=vED>NJMWu2W*q}q$+JPx~b3kxAvFR1D1UkoT@h=6IoN85C69Rrj2&ufS3 z@ZSIP?i*z?_NnQ+{uV+%9{i5WL6S$0HoDg=>0$vbmM;Tf@+ZQ|qpDMQgb-}i`QKNl zi%SMkzUL4}uH~-Mi{fMu)V?_y1X2$*wUMl>V67>dZmZh-`cbq@Jy9Fgpey2by%o#u zBv77{Gt{<^`$|ho7n{=dOKqHnE*7g?U9T1SpQED@TNFlvewKy)4rny>UpJtX1pWI^ zP)K8ZRv?$buV3&uV#8+GH|ehi54s8AApO%Zy_4E1v=X@N(Kom%w@l%+Wqb2x-C<4i z)gK&eik-Q4Jef>@{|DK<)bMMSShXGcN+<01@6&^$%zp0~+z%^8pMSMWP|KxHqos}q z0G%>1-V+R2nxFbo;{u=<@6}yHX zJ(?v0BnI?~d8G^8=Zs;_#x;Y_3D@4{fyJWXqcZksroB+qG4zH2+{3|gcHmOmIUwTM zz`3aC*T~mSPP+is9^zyWr&nzQ zD@U@Qc0CZ=0kwVD=k}EpF?_X8l=jnjN9f>0o}1JHfCLPQFLMDGO6BPj7F~)yH)HOP zhof^1#)?WmYPtphBC9eu4Va&+zc;9Y+}s$WlY_OW1BU`9 zQiR?5OKv@-2^0PF1s<`V?tP&k$kF_r;as(cx)%=*$Rq>}ka=RvA~`1#>{|N(8vPf0 z=Pf%(BcPuwVJ6u!6H5Z4k}$CPjHt72N3)ey#)JBca4YOQHEL)TyU?@m)H{cT(Mni% zs*wz<>(>9K*8W^1;c>sw9CwD0Fu&})9*d zcMe?ymzJ!7^daP83B)zTKoOl7;lXS1s@ZG8pUmcF;`{$V|F!4&7xaL={BOEplB#h( z6$|hlKsqd*Y#tcbNo?~XhEs<09u(Uab%MS>bi zp#0c{Zbm*qT;QP#amnR=bk28|j-FX9|Hlu6@bJ??;_MK>t_dm_F2~bFxNqjRvRa#Q zHP|c$Cl-&n65bTeLVkJ;y#NfMhicLXSw-1j(1-Pv(^Fc004tvq9+Ln`mJsaZa9_dg zoW|stv;8M4#`EZNS@6b={tds%r+#?b>@R!9rx5)o{sx~GB7WDyW5@2y>USRjC{WXE z_A<=w&p`o05DOaiJg!GVVT_AHQfe-?#be?!j+EPDss7B%-qxM>30TU|mx(m;DpUQY zYx%MNc4o-)F!M|4nbf9pN}7mi5-~x?Nm?$9C`r9zqR9?=dQqjUr1=8o268@j!9$g; z5B!<4{<5UXK1i=h%F7D{fN=d8-N3a?z@4e-MlQ4R~YNO*6abr!mdcsS_7 zSJ($=NN+!O>r_4YsD4($z*J^&b)}{xL_aRDln0`H2B(0~$u0~GuRf^l$KS4pbF_}L-p>dZTc zZz%~2=cLlYEbsxqepnmx9f;4Ty}!62(qJCYAZtPL5M1OB3zK9Z%?%F=@ds(O^KqEl zfo=!h^pFTnuEC8do-i-613$_RVQ45* z+HqH*7C-?8e)6*5T$JLjpnm@q4(*VmlJiI-Jt;n`O2wBU*afgxv0%`E&`8F>Z07O` z=K0^0`%x|hKsNI%ocTY#g#FK{|6gDJe>hF0NDG5)u$o%%@?OZ)mj5DE4;6zF_IJ;O zuw8nZh!@TYFWVIYCUOGjOG3$CQq?d;l!_{=(v`mcUQCupLHp8=?j?oGpBAVw^J+$ap!1dY#b(ukYPsa9e<@-SVIcQU6;w96`@k<Z{{LzLL=t+H-CTeIA&|I0?OEQqaSEQQ zv4aS>%eXX>n7 z4F(bw5afkR7EYWr^3n%7C-xNu?}o9k3%?T=|C=AiQj1%Z{=VUtpjNFc(!?&xBsheY zvBI@!iOrcWoC0Xv?r@4+_+BwJMkT4==P)Mordc=>qWY%i(@VDs)~IJvz3&}V1bVj1 zNa)gpl@po=9y(1;HbFYg&BPemuB{ zfW-9U&)r(D!gteN{zugf^icnC!~ecKOQXThe_uG*fTGQ>aQZdqA475LR zF#W~URIC(;fcgQnEMc0ql8Vo(Y#$%^)+>^}(yjBKMyEDDD$gFjyMQ|BiJsY2oJ|G` zQw{_q$Y$nL@81^;4`lsr%@KSuGG#nkbm$3lz5O|#X<=n4@ky3QfRtb&-Y_iYwUoQX z%gRe$n{qCseIgwgkq;g+FQBF2yQS-n&DGwshMI>lBD!`Z^FitAi~+xLb|h)Q&FF-Y zrf2w}LMp{Xz2stJvw2-8%@i`jVuhDu0qb-c>(;Qwps&q;09iJx-58(n;?ODAefnp@ zVX&4lBpntFHY4gqmB-!85I~0kBk4Rn-vMEXAs!>D*;;WuKg(@>>EIdX+kp?nSa{K! ztfzr34+&?o7S(lNOo@Ry2C*)xCB#fseOi?EV+t3wlhRDtgApfTIwOqV-aHohmjj%@ zi|^$*C7+Qe^xL88_|YLk!q+oI$s$!#hAV4{b9eJ1<+`;db2F_i4VY328G*xx{?E)w z_y^4}f&lWIQ8OuBF=S!|yem?nK!Q*GR1C)Ng(o;l{$wzSe9^+m%kQo>T64C;pxjSx zbCQ_5nAm~wE9m9%y0>;i-#!osW?=Vi$cYjGoHx1cI#Qyewzuq*q(GG1wZVugq8SbG?l zqZJ1#(7|Pq)|Xef1uw)7}XK4v2RE0WN{=@8_;@6SG>K@cb+T(Ha>A_H19)P>*w{iOJKGRUTo^$!2+ zL}*gsj*0Z)`1T=~ZH`1CMZUl6?6DMRgkk;4>1LN!cGSoUoX#U*V1PaA&p3i^DJv^G zPVqVNmw|=vVnRGUE3|y9LM_7>hqMutG^Pc44=Riod_M+E=_3N}B#{?vTwy+#xYJSg zh~+}IzWUUZ=lm$dvE@Pn?gXxT-I&U7KlgiQ$HWV*Buq@w7qvq#)ezFOwUrmgQSwD% zPk$Jq^bS-ryO^;VQk@Tz1&HUxXew)4cBiX#K?wDRc@rwWCk6I06 zSYlydk@$P_ny)&0Bx7RX{Cfu;u*k6?ZilI@U6H9r%g9UWWNvavs2TaYG|saUo~e;` zcgHw!oyBt@h&0ew5iDBxgR7oX&_*Z|T4tB2&>eJPBA3n9F+lElbEBnc8>4W~$H@zO zZf@qHMIfoHmhp#K(r}Nuq?GWY6{Gf*Q<35a713)q9gl?~tbS_a{emxRt%gRajrj^a&0vqsc75kWE#_TA8{u;}n!gMr&xghB@%-8gZ~+9LDZ zmIl}X#q5D0_MLm20zuMeGPI=hM<`uHSPTk4+A7(Ij17Pa|Ivar%4i$*5?$gf#a&z~ z__`u@VEaQ~At486W48?(CCC7;zD($5r31DG*g^mUIo{{e%2}p_JgOc{BCH{DZ|d4Q z?KOv{I38)*lLC1A#_+p-ToY5Y!xkxtpxlm$fR+#-d~!!8g;Ud3j^1bv*0zX@K?xP9 z607aw&)+y*5>=h$G~9dmp(_MEIjwC{oyzehBOr|!3{$GpI<&B{lQ4CG%cvA6*W_tm zjDt9|IIKnr@MPMh$Rh%eRY+V020aIrAO)5eKu*pk0G~@?RyTiOQLU-0t`)hh&X6>k z9fILB+c;QiMf8QT5d$$0E&Ox>1BRo%?$@5W9IU4flu7=l51Sj|U0oN^>cE+eP_ij#Is&K9h`GneOp6YNX0JLJbOe$GR?)YF}H^d zTGw zYXTd6MclH}y4><1#cmt_?&Xk6jYCwvC=%3CcK}vJjWhjhtMh$UQII0pk8Uwp^nRm9 zLF6zX7KmFp1~f3M;tUGv2RH@e(9v~-ja2(>(@;W`P-fwJhX%qCLhwxKg5<&2 zkc7w=YEbE0Q2g!mh7d81e|&>GHr$_bbG0&5696u+#M(mg&ybU5vxS*bmkW>X95mQ1 zou*g9@M)wxr!%-TO>#4X4?TT3{L^h;iZHwE{qlp>ze7*9s+S;ZVq)S3Y#|rBc%M2F zfY{^B`;9T8g=vac7Vp~u&y?Icz?5JYi&WLo zj8KT9_K)QyIW>?NwUd5VtLJguCte~s;&U|xb}{F>`R&SE&KZ8)IR6U>F5vGs5Nk4n zKT#h8&$1TFU9oXBEb!1_;#ipw)(j~uY-`sxQ(u(pv33q1rfaM`;6t<9@6lp61diLG znH8Eak^hL4U;4F&NgTWpSJqXpRkLZ9J^G^jKD&)KJae=6k16fd$0Z|vg$wPz8tSsd z1ZkP~M#to^aq!X?|M(k5k1~XD`FmePioQwsu>15G@2$h|fz7WY`>git`yaLzu;i58 zl6tOuuV1Ux%U@hvop+ZVpF|Iky``adcc|F3p=NHcMxKWB<SWX6HZzp z+EW}glUNhu(h;!~+zc)w8%-rF>1lWB8BE;E?QkMv^3X1fM>sK<_gUHOW}TlB*EQLM zk*XAX%uq?IZEa4gx>B>=kYOvqU0Yw)i2kOxl2!N-=U&13eK zl9M-PS{8ZUxBOe$9j;@oN?2@k%R_u|*_;$b?PT~*)SHrr3WbXU#tS(7idPIuqC)b(2XrK6Pu}|zzg|^r(Tsw35YGash^rafSEotQBvp<^m$j=Be3Xz^ z)^2#%CSP(}U>l_heGS6qFt3?~xU41}a7<(UwqtT!h4TyF_C*ur0U@d_iQrvFlm;A^ zuN`i6&)ARcDN#KdVOqw`J;Xp!N2B*}^)ama$MTZO*la3TLn*6pQp(r|m|VaFFI$sT+v>6ToE5kaw4EXy3#O19`mHY1!b zbXq++C;2^zQAgFU)Z^>rX#137CtUss@@q$ybU7+J+U!87vGL_8MO$6=d9B=g-Rz1J z=Fhb`EN*i6oayoc4%hMr9>@4jPHd-lUU&B%p60Q7l1|nWX{^g4uXp~eC8f{gl>TF_ z2dzcMw$^L>h`f_iPp(>bRkA~tvS6g+#dYQl8$090m`AUxHU6#Gv-~#&sEBYNlL4?K zKYUec{kS+J{kW<=RvWCPSzi}tio7#9x1`{tgI94V2qMwHClQ70ioCqi`03%-A7x%X z5mI9mB&_ETpsK7w32D2xt0azy9N-c5!ok5uS+Im@i=nZf1vm6u^TH|oF;L^;lX!le z|A7G4vYr|R#_409+WWh+jc+A3rpBQ~E}BliKA-aZXdyTCVMOD~6u0yzStLR4z&mk) zD!28HRLOjQ9N9BouQOtW*oJD*fLX zQA5KRiElQ-UN*AwY_3+gp|i5=8uU$yb{CB|w$!x1p2TV^zUAaKygBa{^M&R>(=ARX zUQRM3kDAYRY_z%U{#8TR6TDYkKP@TOepg^3H@;cRZrhs~Xc+ zX)-u?Sv+rJBqD+a`t8`sK>%b-to?YOhl^#4PEY{1__8rro-cdXYM9eIt$&XVI(V~= z;3Rf6iVkm?JUrSQL74PDg@2pPT7zlZ<}0U54;I^4k_Hx$F)b}a^wNRzHr}QIDyztp z4cnKo!}Oc;GJXPl;&m`RHBQHvHIttP|Hzp7h%}G}Ng>M_3A$gP3@BuhKow$c9_%5z zN#u{puP4_USnL*>5=dHOf4U6#9JQGCnA&fE@483BOJt|DT`;>=NCp5DqysvpvVvAO z7`4m&d|!WqwD`2HyzYZ{w)W1=zv4gbSXf;7>VC(-lQ+|*1ZaVh%I2=1`RsQ{+3QLF z)I~A0*(fj6AEn95NQw}D4hF&SZ@rpE`G?{`p?jBm_pwPaLd$b)flC(G7}s z_3k;OYEv8@_ehuIxbA^pc$Slw+k`O4iF6*Yh>#uGMX#htZ;RafkobG-jqGA07V{OF z5;j6}^UE~QCmO$^FChnxGSFY%I=R;J&{2D_wWPwnsHh{=X^Ru& zQ7{)%|K@v&$=bX}Ts|dYfv3PV0vh|r5Bs8qj^K#jeA)|qmbQ>}H^t81#@QXA9_q`BmZ4{gF5g4EJUnsa~2^*Xx_up>oDz|9Hr7Yl>Hc$-%=Tz z)d8EqbREQS7ySAs0O)u0E??(=Y;=Bg)zj7Zw%MzREg>?+Q3^>LI5b#0Em57mwccTy zdL#U^Pw>SS@fsJTiDF@AYWLtM{Y31~hI+O3fDdDG0{(Eu#anvo^vlAvKz(#O8$;u4 z{<6N2gxh9NL*!c$f*j=`EiV%`K{hpWWjCp^&J1ZLv%Rnio~n)&4f~`YpJIf{kY z0T3+xC~a)d%2qx3suTDMDVfL_DLmfGP1nWXXtHq^q04^ z{nd9Z!QiP>a}DP(=D(TH6lZKG%@uZ;)YQv@yPKUZVrcP7_rE@Eku)ung2sL~9@*nu zn18G^U#sUAzU8xj??pU}5Ci?kgq)G=JDlPG3UtUV&3b5)dwo^|Zj@X=03}umgp<(y z1sVVhx;B)DQWN`^8|_S1a*d!SFAzwZAdje1tjez5Y?7w7So5hv8;F_yB1qFcYi#sv z0wsN)tyG8&)saCW|5S*l)k^8?echKv6EV#6hRD|ZvgYd?m2HnyX7c`TRn7|wYjZcU zLtPELf(l&ry?3V^9BxW_^IaKHn{m0FP2~w`A?hP$SWdN5LO*8}R(EyO+9?)W5lDMZ zX-JaP{;KF{DW*(!Gjf-|oEPciU;4vLLvJ(!JKdEN2*DkrX6{WdDzfw#B>B1wFe&iM zG;MxfHT91wqH=@wTrD1V^G+umTZ(}7wVQ#z*u_)~ z)fegIiQ?JVP}+^)f(47xXYF5cJsGTG3y||Q=ccfi%II0y=|eRVx5R>9leQcFte&5-?FsxF z?%VfhSZeZEiogGmJ~h-qk!>?B5peO|VPF)Z$sruuGa$p`bVZ3r4-wO2Vi!zR8^+t^ zobZp|{bc@IWW$>zRUI4fN}&K=;Nv_0^d9??#573#jv|Dm3_*ShAOC{+y^3Q8q1vSp z3!Slt1W`01SGitqmRPZ+#gV~Eyh;-D?8NN;gR~fX#U;k4 zxCg`8ao+2sNPUhXkx&Map7C&*m|r)h=(h4ssOqz}^hy_o_oG-_?J@Q&GxJ*tCPE2i zd}2qH**Qu1Kqy1cLDVLCohk({1){`h>{1rbClN!vBA+;b?0-~R=hn3$O86@sQ?M$> zySED=hGt~EZypSIc>nn2h|FPpd`V&S5pe37z z6oRs$=8W*sz~qAHrqnd}KuA;IAth_Gh5Ghw|Lt*PsmI>#(bml#vb(oX2(iMt5vAC_ z>l#OB&~(E2^ycVC31#f|q7$p@FSGte9v(<6sZmSKw|6;klEuTL>BppfkaJ8jqCR;@ z;379?y|d%0I|0o3wpoq49-3&_hpw{M1bKnz;>Gr+J!yQ<-=1CHXs*l)sDU&_Lc@)$ zScX0zz;O0juBZLeP*Jot1jHT{DUxsR^*?t_V3~5%J3DNO6IiQjS9=+LqQ(zuneqmBGnb>?CLsSCtO@0|t@l^DX z$y=HQ1xYKFL0mVF6jD2?3x5YmZ!89C9Jm81sU0V^EJ`z& zq@-M1-w%_RM$E6Du)gV+_pLeXoqLqyvU9KeOta-jAD{Wxm#sHH)S?zS^hc)8fMtAn zag0IdT4{E?v{N|P@qQF?Gx~`cB;kkCEfQ>7O%V}2T=mF#D6i8hJW@=?1l;4+{@!7+ znY(xR4_5>orMPDe@rLp{rXQ;fqt>v#?__eQ|6S>ZhKDx*M2!lTn=R(6e46bA1k!%& zX$EF{$*07PQ+L%C&%3W1hu2MCdS17GE6lGAojm`Z!M8Dnf&AJ@QV{xa$$L>!&l4ip za47J>&7O?AQa=|x$=UhJVbg@bbf@eB?%RZ|RkS1=ua@QKlG2^QQx&$!1nIEIUp8z; znK=cjATAnIr@R{+ZYj?%MrV^_PR$nckP$H5s;@(1{>geaI8SOw#nu0(JAfCf;rgRO zlxfetL`M7Su_8grU%VT*!9Q|_PfH_l?8)GI>9iZ8^80r7AY_DkFD0iNTaCVS{F~me z3SR7PG8}y)Gi+^Pb@<`ZLpk(8pH?Ddaqzdak;oJAH}qVrhwg40%5K|l8CCszju2Q) zW$b4L)k2ReR52*)M+MzaD@zd6Fh7^r84a%e)p%6F_Fb7+DzA&HKLLeB#0=w>jRa#f zW9E&QkVhz_WRwQ$^o#Q6MvJ4SGRcs|@}-}yuS~Z%Ik@imEu!8}0qZvR@tH|!@T9tK z2W6f@(&wDqLO8X{_4C`^J)-d{r^0)S`jnycL`gMWEMS3eqqX$}sNcmj;qwDrwz*Rf zO%VTkNG7+s5H7YufR?LZA)6=B*R?rQ8$8BM#1;GCPE z^*!E(fI204)=l^6m)ITx#{G-ltk z=X`pRz0zyKk$^!a<|)-ERAPW!dlnvRi)K~L4H!++$k%jC6|1V@P+FRWBl{2FVZ)XN zHa?`Fb4OOISeC^6Tx@~3>9jgXfJV$K=B)ZwNdIIP;UU9IUPG3d{e`=TU4qK13ZFrec)wnC8B!=V8oUEb|*YD(D0*)o=Im z4j=#QdZ#``9%NCy2}(SL|>F~#l2I3lWQ(rfxX)gsLo+hcsK*MbFu1c!C4G*N_19ejd<7Bm+< zgKU>h1fD`OlYfaIDI^n>O@js5bEYoRr^(p7tf?p)4UsJg-WMfSgMF`x96O3EMP#>L zv#NL|`xdZK-R@iM>XIIZdI_au{2NRszx9`ik`{1SM&^0>==cZ|N$7%Z_-ZsbP& z=bP?k@a#X>RoU!jw{8R_$@@!aoA@VLegeynURzGrNKkJ$shH%NV}~zFRQ232%3Ky^p)twmn#&+PVjw+_rRff*=yqO;fv){XP*{4NXZkbhaL z4g7QMNQe6kk?5ux2a*|Y_>7LAO5YQR<(f$}lNS=yo zK|#)W)0D9YSOXi+E;&uV&>H!W&8tbWy~&ue%Pw7s9B&p=QgAUsX)mnFrR`*z{!TON%d`Ys+54cr`5)@1{5lty23@y3{ zmHT(A%u^_wJ7x_D;A+2A%U@A_7FhsrT07-Y$ak!5QKRi5?l5|8Y8m5fI ze1;(>meNrcwk7+T*QLlyhC%5S1vom)Iy*{Q(Ktn~)@Y)x{>>Y3i9s0b>EJ!8R}=sF z4;cv?B_lZUC97=I=OX^U3CsS$)!)#Kl@VV}{^tNA8bU(Cyz=s>g)~AA4o62v%_av- zv)Zpb0)a*EL@2ah)Wci;=c{7h%TMt*-Ek-ioZ6xttdKeXYrkF|L-)O4HZd{Dq5GXe z_G;=)K`{6#3ZWW`yT3z;bT&!f%R&IbbM>9O!ulFq|$ zQ8tfHhW^v~PDyD*X{md=9_Y{kf?0m*g6zw!*+^L3kVV(w`TFG@OG?z)2pE$lBfTm` zs12r3!z4$vtxluLXRp_ORlbMF56de;{zX9>4kb$t8}e^yo`}W-uZcS!`o_L)#w#Xp zyD>>_6lPFwk!YCrxAmli_SBYoY-wSNzWk#0BAeQbAO*8FWomCzO8CzFaYY~c+dM2h znwFlA)Ke8DKHgR6a!7H1C!6OBaqIxQnJS@)>RlT8qvn>p7UEVo({>>S~r7+9CYT$aj9+iNw;78F#U+ zHr;NI!q_afOzYDgULsi@hw)j)k$cO7y~~xuermxu@GSq&h*A2F#l1|I*ca+6FSH~a zWgNZhoSFg)B;i(lM~P4nN2N&N+JytLL{T9^S@$ zZei8}(&_S&2R-&)aAHhfUBSJ5PUIb!U@Mhj&gXLnSYG_z$X>qX> zblHRr5n(%L_PE6BAp7%fPjNKK_YPHd!Sm6e&QXGS19mQY;y{sKTk6zu$P_^-Dq*h8 zYAA@ob0sHxk2&AoGMdr(LR$RRPWbn?N-bBNd6|P117U5OK1q>_$3DCQS7TV6lnO+# zRQE4ZTSiD-vaxK6szygp^coO;qSWTA8SKKtI7 zVoBpGkNCpD+&tMQZFp;QFuo^)7cjpeh>ngeA%j_DfDKa|bPM6c*dROrMTo99j7-0o+U~c^1;M<_y6?W;CO! zR$ec}QekW-Ty^|Rs^z1hHCUthoU z4SqcV0|y7US?irHY!K4~;wS>lNglmWV_AiG9>r!}q z;V>~p{O4Ct2-_9-#_Orr*i<_I7Lz@~XM1g86_{@tv7}fY@2>7n7(Y}&FS%hJ9#tK9d02>-OXJ#Cl?W{vDOsm4-$S|mDc~!x&)Q_en;t;S8`Y=$)EXs|u`L1-%wYTht3Cv;8e_dD z#}b1xPxxZjeix2HTNyjy4c6t9@2M{owh!CCNMco)GtYQkT5-%|Z_?E3x(b?>kdW}j zzP6|(Esu!%%kCiS!h-hK+rngb^BwS9=pTw-AQg?(Mq4sblE&k_blgMZ-e{o2run5txdq^Au-!wC)4f4$^FVB5J*&YlYSRB*C3-+ z$XFi`zI}zqthb4Uz9c2qQ-}%ieH@Ctoy~qoA$wRw^15GKp?Uv)gvn3^znYB)@DydP<+K@r@{-8u20Ryh3n`0 zFyOnnBMjvQD~7ACRTwXA^e!X<>Yh_uFADN_baXVapvSj%&uhnnIaa36O4vn!U$G)`u?4f`IzD2k%55EMk0vi!15w&cl@+&41jM`1O2yV(xDY zqd6aQ3$!xH&jZHWL*S;^Tj%aaz;S(;JPZagL;O$Eua7pI%HUPAx2y z#$M^Q9L*gPL`#A#gv@GF>mf6+tLkvWVb&taVC{I1SuG|B$taehfQY$to?zVdX{SW;RF{mg*eCLM?SJV{NG zYU=8az|8iyaPl(+J(C7VJ)_FY-#K`d8iSX)~I+v%KE$9hMR@UKX)YQI8{ z1+;BIK){Qm76=oJp8Fbtm9=%CWPv%Pr0%0$!+#8hj48C|7k9@g>YpsZvh1rH<7_Hs z=Gb2pNO;WZrw`}8lVkVmc%Asp-qe5XBl3_;B$RKi8aw5!WdnuDV+mzZzxjjev8J}x z(#i&=@1S$Zp}l_EN{15+$J2u!@=Vu5|*EBT&d@|SK!T^JVgHupgxQB%T zI{yHgNGONkd8LvhqESnO_yb^G7>E4E$y$%iN(YG_r?vW7SvE9fr2MmL6=)~qdbA6i z_F^5ZbY>rW?S!)~o-qH(gLgTExqz`@!Poq0;NN*&XGGBP`6O7rNVeMHu;ub8r360I zF|sdU7P57{rDWCL9;tOhpxuen$3{PR?RvK)|LBz*E}x!e+xgDb49XnJ4q9usQvcYc}`!4|PRSUN8Yig3s zZ|3BTrfcfr4$Aw1j{>$O3G@&uE-pTgh2F&8xr}UoSa#aY5pZP1_C8I*KqC_x>FVlg zx+mOKwB;bYJdAnp?Q*BkzWbjk3$v`ZYZ4^s(&#*O`RqGz-oT9s-5;ck z6VuBf$?%FY4zi_77XGhk3??z_|GDnC7KHipEn_1joou^zh#hQib&mRi^aHZ?hd!(N zvmc7yuVJiHyqhYPdkcwxu@Un*hh_4+#qd_u)VwL48j2y|@6VW>n(6^z?5m#lhu7q{W3=Iv{*3fAGZ{*CUdmSGi|1jM7fUGEVTRAR+f?;8YU-^kE zRc_9P3%EHM^k$%XaRY{(4oj-_L(X!8EfK(cB0H#PXfIYz-FNr*U-MNJ6qqd8-a&HO zFD^c(u@Ddu-N(ECd;7oc1?%CQ;&V1cd;7<&1Fq}GI-AdBy19r`?(Jtk-@F`=$e ze*6%@BL448glG8V+R9o=(ruVud$k@hj{`uk%Fx*m4(8%K+f%jvSsbOK-*vh zn`IcH?~ud?9UYzVul|^O6R`SI99cehmM}t(dy28ICQD1#&pqZF4&@&&x=KT+j#u1~ zF#gw^>w-YbSlY(sz3+XaF9;QXT9F>}C$$Y!wUJ-1e8R!P%7+R$!V{8HP*Bj3BRRXc z>_LIqp|!-!Li#pNm2`DSC)Si9j5-awg(Uv>oM+}-!IuAJ3kr5SV~PDkR%@c;8Hm7kACK1{bs+@Xs;Qm2FCEOcN(nz+ zE!vY|Wk^AVbp9LuQ$+mvFbZtB(*M!6R8#~OXZa9#F>$QGSX45+o;p1}U2+^|?3&}- zy}5B0REp)+Vqs=hgf4^49$Z^@E$lb4pZ2mZr;-_UxVF0toKupXOC?~eMS|k7#NV0d z=_$Fn@%)Y-tH^3DE0$M@2+^h##ve>clQ%lT(;YJx<5vG$e#fFq9!|q;pw?6cP`;| z-bjG5y+3GI$VH5B$_#@>z$_4Xag?>AMpzf5jhcu1T2Pr#-lG7^RLM1;?Pl0 zFbD|3f&H%G=e4(gXBK=i{rA-k4+eT=5ACmL{8x%(5!v_V0{S6^l$TGCNZK;=f9{ms zF+eY;x5t8`#&U}0p9h4o!Dc>B|LUq$sE7ZU^ki249x>Fqh&Id5qF!4p)IuKYAAF8r z`;7Oq4R#$+PWKtA_9^cCkw|k&N~Bi?;_vwvAqD?+_>t8QBrm7@vkwkzd>$eC=O;br zkmS~_7%5)2rxzAt7D78X_5D*E(OFrQYtvZEQCVHPmmXjEGF3JHukzkHs?KHm5=DXp zcL)U65InfM1%d{53-0bN!9oZSAOv@Z;A{vE!GgQHLvZinoOAo#`^K+dkA8pj=r?DTHCNU9lTLl1!t@8=MU88;f*PZv?p_e*{M)h+kKJb^ri%-Yj9g29 zyiWHxZbLZl7dlx-cR)e)--P0S7}9J+;gXe7wWPipB$J>@Y zJ*=>{bBrA|sb50hkGb`B;pml+KD?lmA}z+_>TBECx!G$FEJJ)3YOJPWc6!a8G9|fUHtYtWw@_4jhbH9aCvfImpEr`#p`wDY;(5B=m zoMf$!=hAjjk?eh=)no}d2Zzgm`Pnw%&I~Uhqlng1I9eq{8KdmypDfoe*S{EMZWd8j zzYLeq`hh9r={@P^t;fui6f_j0=6jXx2fh4wcf7>oTjlHy*G0}g7&KL!RYa1at#ww) zpx4Z8p5yKO39Tk8^KYz!c#;{q6UQ+oBO@bX*w~N@%Z{Eh3@3J(UOVT3~Rm^u!4)D+u<_i3qlxq5+^zbp@5ZC&f4ng z`oyaz@8p0Qx+9$2(`yRR)|xx^AU0prYqsRlt079yM^4WtN}r9M8jIdN>^#^tFt12> zyc_iUQ>_1pC#*kld>j|=y?N>>xcIxVv`rTVUupRcPtg%yX zzZYbYb%95+T!%YVjJ-Gf?~I9qxB!4)2?>duyu8ur>F|z~jIy#AY}$9ffB$AVJWpcK zYzGNI_{WbFoScbSSrqN^yP>BxpX>wSzBv{^qFh1*fg9?h;}{(IGm4s5fOS`gC2zuG<%4oAC_`w@L&nJT64 zwq7e%YQ{Y$mGv(V5(qXxr6v*BVPP?PNsvjxEUmy!D8MEid-vG8e6NH$@=wG!6ZwjE z=Vub_L?#@IGKy_uT=kA9yIjcAXhq6U#{M6}u4a)&kmZw1@|45NlCt}7cBJxrIa7`G z%P88D-$is74BqjNi>#5u3#COKqb%oJ6z>{=){^`OiF4rR!McnkVQ0`HZD8BbsvbWS z1pmurRI|(JTYMrR4u##INWyOZ7v9mtED_qb8Bl}wK>RBp2Y>n}G6(--V}PyyE4@J^ z|7Tnf|M{q*|NTGzAOsB2zfocEzc9}Kb*=wnFFM5*&;RTRhrCr-f{GqI0Qn0jnu2=B zx(KG|(|rwCgHDtJJ?3N!nd$bDB%k};MjHO2Bv9RdE`)a_m-#O(z-ko-XWi*Q~*ex^oN_@sd=(J zJ^P<)8s*WwF5f(kV4Ez_phNFw_;J*0L6|zL*<^|7#HMW4DM-wt6gszN2;MPvz7?*x zi$UQF#ww)<4G|J6GNi>v2#6m42oH$9=aB!#t@2LYZ7FJ+6t$qB1Y!9G7nxcd`LA_Q zru$09!JVJp&)b7mFI|BISdnVoHEi`oj&_CuLxd;hNo+tf#&A+E){g%>!lkw6DIUg8Jd?kHyfbt?V-$>S#t{ z=gTu=&f!7kvzLy^=~_UfCEM{1)+1 zAwre6`QhSh9E(T`3OgH-$a&)%Ky}Do=lmpy5mO-|c~1?>HlQlDK9qd3Hn%t{30TAOWS;VaN6YORggxX;_nrdSmc!ZeWLSv_A0_*fcdMK zc)iW9*r)EDu3UWcqy07@VUvDq^iGlu)DHi^Q$N{hr(9CP_kqDwwJPIbrSE>%#NV%W zJH{qQ%j(ZywB1N@>g)^#Jmwa8IzLi}%zO1nGHe!?CzKZ2Z4SDjDd|qV{BsvvZ+_T% z3jfFH4ek8Uh{^{K(>bpKy`!(Ei=LM(Znm0SE9(Of0py^I#>R5D=dfo8($kw3-<>by zKop0$7FJ3g7N1mmn7gh+ostKaR%iA29Bb9c{i-E38SH&6UF&vM;j-11G4?J&)xIc4 z^zm}`ePs8uot^2Ulb1Y7k`nJB4|b@57p$PBX7b6_a%Z`V%XRGcIOk^bK~wA}KH6vn z?|mAq)hw~avboYKmo1U@lEhbVJ3zgWWkI;7&fI2zM8e7}px)JHOdUMe9v)qJI+w4X z-BRf?z}aqNIPWwEc8XKxUa_%A>DF#St3EomP(2^DIsmPdP$fE?u?UBaN{bnP`Kzxx zoOW6=5~jo)pcSObh8bAPMp0eE?N1r7{}~2UTrf27t z#xwiw+ETQ4l+lYnZmEMIO+YXSy)~_R6t4IcMe~`jcu|Z?O@fy07zNu5pmEwiH*Z&kYAy zkA1^~CilBtRMef|{uym__h}Mij5)=(vH(LYlN82Xxc}bE zC{g^>rB$@MG1F=ddWHmVe;?djXVMVs71%DL`*~s~%>fw+1!(*cRW@P(6@<6iw6~z2 ztEe_Y|Kaj2|3zVwUb-{H1%-^}F8&F<>yk z=*AFbrTcl%=F2i0uo2GK-(w+dnPHm7X5_p1f38mW#;-fHoDoDc$(Y1N_m{IVV++bU zKK9YRYHhv7rhQBQRsGZ8ABk)AX2{1Pu$`xn`>=e87N^km-Q72o$ugbJ*2jxsAcj2| zom}wVY?~|Jt_2-XPyS3$-ncIikm?@b-|h`E=3Y;cm9c`}Qq*%*+tz z4Y-#Y!mveNBhvTw@4OLi^tqcj7^75%$y4h*`*lIVTqXQ zSz6K;jQ-|32H%Txzr2Q;cvz{obXtD8_CH}BuKv86_^Uae zg71C&G-XH7g~ddb$DQdONlY4VkCoj~HW~AqbwOf5rS8H}WCENJX1@!)syECvG;(j> z8Hk8*hB#HbALbH^&rq(T%7)MU(R_^#)G_Ly)#Y-r<+*=S-C<^a-Q&mFwexGRkD&mR zPF;?@TsRu&ZeNQ>w{FXz`|_=L)mmZ@7hwmeR+E#2!orT4JmzOtQtdP(fI(~~qVX5; zZr(ZJa$K=Tn?`PevsB_hfa?VlJTN?*=VxF(a1EqS(9@0`yPu}&z7FzxFPT-nQK{7G zP8|Nm?eiTN1?Yfr-&b*q)i!dvEZx)O7eY^(>zHdo(?56etGN|esI?XP2?VV`7kRnR z@M_)3QW1xw@p5xTY5oD-x~gPsXEW~B77c0SM(_m+a3rAIh4JgbyV8z zQL|xt|E5W7NFc! zkAmwi`w(nbGQGI4Nr`ll_LSaxdfqDGP@5>C1A*4Yo_>8gSaQ)kN5>A2#`ePpL}KtY zP~c3lqj!%Y3Ys1qX!&~|(@%lt-C4J90_L+#YnxUPMFsj@!T7)MH}2XJ`h*vA z-S7f9m>92?2_rMThnG;Ze2qOM6}kncy(?4#)Nvr(ymQwE6CF|TTo2(dG#LH@h~I6g zKr7>W8*I=$*|@)#{_4~%>T7zsKyLYL5^B;Xu(c`BISPHcot}8(`a^)470rM3GcpR# zw9&u_GQ6Vy+Cr5@?t6bW=n--2E10O8V|U39m4=?B``;F#*Rs%-5}kGF3Y#k!iC zZI}mb(o|Y(Rjg|f$0lL_k`?jih!b$e^Ib^CB>m@Yc# zm_bE5j_9Y|+0(W>}47J_6;o&k5ho2Uiasb0(x;%#kCvg1?*$plB zz4ykrK?nnT>qtr+55Shiem? zQQ1Jeg*$nJhQ{N5Uh0FBr1x8)S}HU?K0y}PtHrD5>sw}jF3LK-z0fP6`jQi@(Q@oiSug%Dn(q?BG3ZAv*5DV4UCSSK%G;+{5V(JN#4~&{ zw#7<_!az5$@_p_edsGtXOARR9(~OO)-M>kW635`&=#Sm9yzpw|DL+1keTeXXlje1` zOl$PBjL#RDIU4ryxuH_E&r*{Mf?)M2@QCio}lg!RG<-Kg2 z4W%`ekkonTEUJyM^}QeOM?t%$wYSlz4i20jcx_8$#`Z$9GUpTSTO_6T%r4QTs*~)F zK!L0);M06{V@sII2Rel0*K8?)Lb0i~WUY*GZ~O2dzp*v~bXI@)UYrFWSOQ11_dW6@ zg1lDbOFdLOJzvgP-@8Qg4W8D|_up*;;PhdrF_JECDhIDxi;s_49+#w~F26ho&gM7F z%OIYt#1UGM3mPfMuQsf0)_?>2W|{7-b|Rj^SdZcCy$34Xw2t_yGOD}7d9SE8a@tem zs_V@)(hnP>9&5H+j#3QrG?WcaqrfB6KWu8JZ+@TSgt0%?cs}7GuQDrX{Uhy3u9%Eq zw^iPHfe5lHVEWBBn_k%@T#q8+R$g0C?uYq}OJj^$e)rCD*Sygkx*C!~M*+(Fh0f^? z4Fcp=Tlv}<$Wm6?Q(u^t*t+_k|BV7NP^}VyIJ0m0QxLx19LLUv)7BN=yI@OJeA&}u zs-|8c5K%N?P}AKu?N8fAoXi zAQ(lF{!brFa{vypINFEo%fuYjMSw*Br)KbNcdsYk!jo>WAMMc92)Wvboe+Gs_*%r0 zG8@rbD3X4j)>uW2WV* zzW^5(EFg3&2*t#bX7@E2%>Z6nIrp5YIqJ;0)P@Cc?pWRs$0h6G*OSL&WTp)QEfx?T zSg-|%?P&iIk3Cjw(dRE1e0kWRS#+H}lF*7v)0``=g5i@M_7)O7tE0&AOrGPv$0Zlu zzr6cru>C=HLfU#O3AH%w;Q#QvQ9OsH=S?daQEbtlef`?Clc?6-p2eViuuDmY30sxL z!RYJRIW`XWg_3@%Z;SRd#uNcVxbtK2iTf{H1eAl z3R}JkdkE24ia**~pIyJUgK({^DXJ{BUo1S}qQWxXNxmhu&8|C03tA&_eln~pB>ZQM zIy{<%Ir%j28n@%-)>aylT#ah9)=~el=>?$L1^AKl{rS6_i3eD>MPZ<)xAMaG^E_Yp zg#7IrQ`676qno6EAstf8$pXG$R6`61Zi)FsVOWI;|%2pA&x?I~{AhI*%?TXMRI`>(fBf z^w7=mwomRY(4zxae{f^cp5bF@u?21tXtTZozy;nlbbd0CNZpv7@F^>3{qB)=h#7eT z8gfBevvxTQX$##;%A)&q`{0&Chjh8%0Q)fufS=CVG=!cz0UljjJ$D-}0m!||VIpPl z*K0XsJO%>;=>#d!@Yn(`+a+m$1i%Ie*m_L7^q91FV9pb`nyu#wY2!2 z1Htk+^Zam(fK<=I5I`b;78n9{0z@7V=`R9-f%9@k#`}OlaC$Ie1YHJ3SqI)1nR5{Y z6Nv+OW*gP$3qz0mtmMz4!H}iRYmG z1??r{%C-8UVb6DCpvC?~Kq~gQjKSeD=t&!v%2jHzP}H@yn7?15`lo8Fu*710tMw5X zr9`7W*bF5{9)?)xK69=q2z;~-v+=?f|N>e2K)uLQ_8v6czwXMg*9 zI6dlnU7oz0N?S&_o8#FEe)$}Wil9wSHb>l|GtTUTt1G9fyvGz1sWqwhacc$blF!Kq zLi&Eu`Jv||AEo>!aU~;o;dK;enBP2G$Fm4f^6X7S5&l%NO9~0HU55`4-=j-Cu9l;z z*5A>sw|lqpb*9w>CnpG8$K|b$@NbLt?xr3ugbdksGnDBnFcGtr3zz>~t6c3s_O9;s z;_Nn@#urw8miwJ!-fg_JRcN8yt&-mW znqCchBsNu)sRO)<{NWbVfCX+hYwMhSB`*~i$oc7xeFgFzsyVcH|Y>_U_IE8RWhzI&za*?j><*&J4Im1Ml z5Hfdf6%AW)(CZKo{?zw&%x4m}Bii2U^n18$Z6|H@3`o9yU((1`vAekMNP!nQvRknX znd=}BbaR}-xbBZVS{AoMAmJwr8e1!Fa@aYr?1H#48y|Nby3hh!Abq&ly4qS2=$u}M z$*QCRkHj>q2{IqmTc7c9dg=#o78x~(AaT!>LN{ycdiULE@u?-}uEW-*#C$W`k3BLK zsCutc3f{T>tHFGI;||i<5(KJDwO0CFz`*Wus!Tf zAwp3`pK*<~^Uc?nBL{P+guj)sL}kjaAmfz(DH3h@m0F zi!fj%0uM9}?i$ru9ZtQ%FC7_EB$h-{zJoN%h@r-GNx!zut6OnT4YB_@NP46$FbMU3 zx)JR^o6P<{ZbbXfUbX)l_M`oO^=W*`eg*p5vj=EU4E`dcpzwSvqX{Q2)nAP%%9+~J z*K!d$tiW8)BDfb!h6v@azu5Y`RO>pstXhL2+QpB6)^nCD$;VCq?cM{+pAalhKH}z2 zV9-QTw&!YBFUSdExKKvl#gZD2z23I2G0LbzWh*?BBF%y(!+LAvZ25w?bn=K@nhyfq ziM7*6me!B|N$!Io=Qdf~aTx!NFFi60MJ1IpA?_C>p4Y+K+CN(n#g{0`nNcFdqvq6y zG6oF;28|4Io8czC4ZSZ6aFTVtCx|R*&sdYB3lM}%;hULafbFU8k8?&fHRL>{bFtLm zF)>H9V|4k#Ti`-OF-3D>GL-}Bl|`7qX1UT-M!h+s0{v=Gbn8`l<(SW)yOdwB6+Sa^ zxW9KORFz~)3n4@NZK3+!%V}aLG9(tcd}hWW zkC%lC&rt0}^WLA)fi85$qfane()Aooe#zFrFXwsCa;c3$FP&RWm(b7h;zt;-0@y@+ zc&}QODO(4REJ=o_MG9P(J}pF?BJ^Expen`8nzsy*UhCZ4>^x~-*%nWtG&t7iYjk5! zda4|rV=|6bG!oXy;(;8v%Sv%1q+}GW=&GHTqc3u%am+ZG6Lgmo_gSj+lySdA=`qF1 zRk*z6bCpF}6vfLF=jY3f3U7#=riWiW9bWHacegXb-9BP+zVvuJ2R7h@q@m5XIGRmW ztyLFmIG3$43$-k;%MCMmuyR78(ifVL;zhKvJ*8-pD)twJ8=86Qm8h^XvnM_lZy{u; zz1pokU+$xNmKk{K7Dm)E_1TGdm=^CuJ$+tKQD{JzJM;rHzNHy`rFNA2)^4&uzwI*$ zf@GbdSH)_t?0qZnX+5>}^hl#RPr|~C>;2paz))gW7ju|;@e$WM`Wj57VnZF<1|J{K zIG-=2`|`j*DblZB6)V^t-A*TcBO*xGm2j1s!iX1%OzjAghh5t1VZe(tVBK}tG{NW9 zE|p)hvh52hgmdGN?#scNE|o+{7l0OvC!6dgZS{R#sS&KO*gAX0p)ZgoN|o4I?(0d! zSFOdC)^&O!QF5#A!um;;ieTHOBRBKGa@*(L+sFPEM(bcR^yoZQNKitdiFk_XyS4jw z;}dq8t+ZZ~Q*)=U4o8zAKE(O`L_hmyaH&*gc8!r5P=aWA?GIHII@mJJVH6~{EX!Uc zD95Z+(-NYo;szs0<|S6F{>jv!e@}X3Ub8y6F@|cVRh+In1^-JMHvYXV-0Vv;9RVRl zCzS+doZ_WdP%LZ>!Et@mP(PUkn-|&rpB&(b_DXlI$d_NH{4dhN#3{NbkYQ5;K^5uJ6XTs7ls^CW zpZ9znOR`+?CcKf%qzaFf;(6eB10;SzDE8)eiE9R4DN^I457^a-@q70uSSrwR5`N9NTkW!bHnMwG0m zZ;S~W&O530Qr{aAao_toC`nwV%l$mH%U_xw?ota1Ol5nTmDsj*^#o+g1xO!}RYWFO;w4mjHC z73o$_?Yfolo_%|QHSM@p?^_ORn3$YF{kx^m{aWxfIwgwY-?Q+ebUA$zCuF z6{l!x6pEtW;{CkCaJay$Z?lrrZ}Mb6$<`$3>GH_d@a^bVfBfYZPmgH#OGq<|c;(V2_diGolsYC0>8*4HI z=Y;dEP7Q?91CosJo^!|MCU^?no4`dG))DOe8fIubIYloQ$yFVH*(yrj)45OI+=9WY zrB`#NftMtda0SObZ|TUIspl+8T+boU~J8nG7}baBO^v#t#>;w%4Y)oiyzxZmTgnRAHXL^5o~mNt`^@yvkdvF(SAJ!;TD=! z@tLQ+S%nXA#AE^fzJbqhp ztt^%zPYnAjm5V6k!}_^%hbBvK4WV9)JD+Me+WyQ?S?ic9|F!*t-nnMxcqT}x`Kv}r zgGeOp*fB!3`{gV~ARYCFn|d|YL{DNORVC~?k}yS&+xVn9LX?Z$m2`XIofy5#ef5M zlgfCN_zTS2iiw?9N8;OTy`cWBcLsy_l5{EDlRlR>?cvm;@_y|tto(=~1?&ubtyQ7Q zg;8#0XcI07Q2tiA%)(1#-o@{c z?z-+%Imij2HWMLqNpSNJ-`W+{rAB_l205f7$%4(3q&LOpl`pJB&o~?8K7z}W#}88C zL>yTyP0+)=RHOVx;@7dI4)G;$w$zYoBsLWMC`=bhgs;G{54*Uu@bS=b&%YTb(EdeR!7@zC4oT>hGex+pS1(3h(0~3Gb_+t|`6N z>+4agJ?-;3ZHBA8bchOeR%9+)9-atI%Ek1ovBH? zdfuZ3IzyGZVypgAUl6CLG~w{)s$Td^Ah-#*Tx#-o8LRg8y@0$KcK;P~7|zH{i`NyZ z^dcWpQCDcVV9OsnTdKcl#lbsA&hGO8rt ztR~6qEjGq`1`SL!ZMDD1`(Ijs(%QURBQ|sLBpIt;2f5|NaDC3TWxiv{F9TQHb(2!; z*`WdCDs!DHn`1}{q12tIp7B^bMbFR}cZOPbz5L|NsqTi|xQR|ls4$TbCqwN5Jy$RW zHGSt|;)R*FP!=G~5FwizI8?iNzf7z~NuMBl?(|N4iP-gk%oEvsB2^b(O~Cit%t^dE zU5YS$T36SU7DruBtjrR>0q`)}>_vIxX9eP`g_d8sC1{n+*C&H_*pI+rFkY<-R!4Wg6O*4ds-qsSwXj#(? zFnXoh)`2ub0=qz!9wR~=1S4=ZccGl^l%r!q$*gE2sjdwtzgL6*dpoE^;sxn%i^2=# zWKb9})Q00nf^U0Ww^60y!_a<4!>5xl#o&780eohh)YUz+2hBnqJ8gc%8)o3|ZA zm&8JC0>=piv13B=%KHPrZEys&ej^bwQGU*=X9f94`$qBAh8G&uxW)T$yYoi@rao2p zNddg?7VKp7@q^i_^hZ40wtW1wpOazF^&e`1PZcd!F}9tF#7#m+er<&jDPdl%ZSPvq zl$Y*AlPXoI8p@0__vToZ8fzU{f)4l3E{~3b9n`ddDxMok-ux+g=VZ;sA9(v~Yd;P$ zK8P=ONq6HR&WSkTq`=K)(R(BSojX-_j_&3G{^cjq4|byrmd%9$Q8(xvYPC|>AsXLz zh>p2C1% zWG09O#3i%?#>5n3LARo&&7?4hHR9y`XM}S0pBYz)*sVy6K$n+OzCAy z=xKy~0z)pGNm30AKaYvi%XM19m+nqpfTSRF_#zw9rR;>tvD;XA+I{rv8v1EXiqi*0 z3*$JwCGkErf(K)WA9l0*>&%t+_uP&!NHbWldWw2tO_R_UqcH?M9w&rlAZl|XRAr1 z3;wDU-B4NTdY3=0x0cDj+yc zqv&RKm!pp3wPfLZeX)F|2Cw4V8{d*^Q98W0SI23Q+&)>=hmzLisjX>Ttob*yCz0to zVGEX>XIVrcqNj;Qg{pySO)tQZc0;uBKlS5-Wl~t!0pi0M>*W$HINc_TG;NVd3fwbz zcgfP=>^3sNQ?=stk3Cb)+Qr&!y+&m=ag&y+(s@-A5@dQ?=#uDof1-GC-ckclikd#W z5s4T|G)!g4x`Tn(lZuAKkkEf@{VW#p-bcH^yFzecMu&vSF2k_mOTVePlg6i^^}U#x zY7%R1?n=Txdd27w;z0WnNj)Vw#+D$vp&0a9f&$Z%_oaO~0zh=!5NPLGO(IvKs+2R} z3&1bkAcvfn>MBly(847$uPcNI1V%Ll{Ri3! za6-NN?t+QZT#yUx0~%n0DZi~}8Y>qLbnskDYCUkK{z|p(>3+;GD)yRcxLz;op>yuX zK8Io}#1Vtl)zHu^zF3)m^-gQdZ>ie=KrmKeP)(xi4-JFg7RT<+ zWrp0|Y`jy>g~uvB#2_Vczp`#z!SNW@V5a+nEf^g# zaURMAy;2$w!qGFo1YM~SwY3(B8ava3+5UKcj~yk?IK}V#;EW!)!VSj`bLvz19KEG@~RxajM;PR^$Ff+s^sgoq^q;zj&@Fe5qu} zjH%rMPV9~x8b}_c1g9DXjf685t*1jMF=9ASsv2~l(Z9>BUU!PF9TUfh( z#p*?7d2#LzROhuR^Ef?RqbtMbktnU)pR2pPqH)gv-{YN$m?jDNP(QXe4)Wn;P4rAv zdNC>(K;fv(3r5K?0noIzdmWI{mI$Z!=eD&q?kRqRXv5{w+Nf3}ng-DkEj9zI= zxtX$>087$cum!j_nyET?2jXoNeQi^!bq^Ynvv0gEh zlo&c&KBo_PnKYbMz>`$!`o`#lT{1rjSi35{aHU4**jmr_IGbo(=O%r+tBUS@n6V6S zG;}y0=@Q@ojg&$(L7VLaMwZ1rD_(z6T*@DCi7lpfvlWw5J3sHL@bThXRz?T;7FrzP znQ8FBy&29N6hG%vA4X?KX$RhzbiO4VA3G8x$Y9t3D>MSY|4o<5@&2D`pEtavNJk6Y zVOwj+U>>@z)U4_{%-W^gLNO70QW9%Y&fJf>dB7YRT3fy_<_r8C{Wd79VT9R z)5=PTA6M^{g zZ>2onZLq!a^}J*w5lru1|Arm!G_>orNI+seyRo);Og1hH2fU1>ma7XP?xBv5_LSRv z!PIh)8 z=lxBO6+E$m9HlKyg}{k#A|dE;*m42-ZpIs05(3Y*({{L_0yw-G{x3)`oCzl?nQRv2 znDm7!RR!&l%`-Jb>C<2p14POTHC;WqK(@VOji%hU*}Qanjcd>(fUY`M2cZpaA2Qxjvk;-TT!lze@s47k zTB9+HkvO(|CM|2WdK856VxQ2NY>IeU!@8H&LeyBSD2+k#EBVU5Qkmwf=5Al+3>Bw)MC8~$)_w?b zn63{;9#L8`5X-8QX43z;UxiQWHFvpCBzKm_34?hRr1Xtw-_*3Z%jg8hgw4Xm41>bc z$vTe46B$GtKsidWe-9L;v8i8%9Z{mk`FLe!f(NyXEIBe}D79r3#Jh8V6_NYfjLVN! zH|yyfx^2En9(gU8Kt&Nh_18B|+7}B`U$!f-3K>Av0n8^Dp6u49kc2;pMB6r2+!b-* zXtDnk4bTF7{^!To{SW#2Z7*tq2w*SKvboAWCCY^ceKjD7@}N3m1^$ujrBJQ0hQlrA z5+x4b=Yxi+z^53L(C1TZ8hiTnuk-T?GEL~cOfruO*8jjgqjdPv-+tM6$O)qq^^Vb4 zDh6caKjTMuz)}+Ud`Xa|)!iuMZGC>{?u-VE$DOsoooY_Uxy%??afHdHHlx?Ko-^H# z)T4-!t8|IK?y8;+BFs8U1#zs!o9!Ahn-APQpgtsMlKl2|$Bf2T_6tFT+$SR0eUgDJ2XT<{~NM%R(DQ@-GiE!4pSbtO!N zyi16FNc*IR+=t71L14aZy@yj)z^a+_{S`557xPu`qp(KM!@j&1K652Z)#`5F)%q7r zzCi5yM8s{L04{I2;>C%xH3=Zkuqp{!A5NQ~{Dpk)v5YDa)0_QjcD#Jfosr@+uv%|+ zY{JC{FZ%%Q>i94=;pca=fe0mB_-U^l&vaHsqnOF{-2_5=$&-dyp(uqRAKp`H?DGLo zrCD|T0ew8QpiFeQ$c+F6fCy^G5+JBOdG|q-(LYUD9Kwr|w?o4KK*z<@>6!u7k9?Ud&BO{g)fPtZbz+1Jj0080*rUC?`NY1e9-!6J|iO1L3!0uo|-??UI zPXt<*K>=u&EP+l@iL==1VLQwMd6AWmMw|usNHu|$-Rrr#R#-spytZ8`%XFHl2>`(z z3aV7=dDvjEDoq%$Fn#{yPFt@B8q?Ululz*h-uKporXv1*86h2Jq7=yiLIhpofynd; zFd(_IvJ=f$XMrpSYA}R$SO(AJh>_udsrs26_hP%o@@w>L3R{Z-j=n%@Aem~$R1si0 zKMmq9qjw*JCHSC-a-_qf;^X5L2?t6<;NBdsVP>@%K%HbF75#71|D={32p%9XX)r8u zL@_pT+JiDhD0x-gSOCDH8s|3-E6#Qcr-wCA^a)5ewe5qp00>x{iMdR|S1Tc;Nxr{q z1a}0u^ryw}dJCZ_HZ__T<@@$eyH@uAP$XE+KhiA=jfGf0qi|=f3WlNn73Ecn^x#b}g$7Jx8J|3r*cQMYk=h4+yhbJ$XY6 zxLpe{ARZ-30BL@W)*`62^#xQYC>sTS5C~Q-L@88NR%gQaxB{s0aB&I%-CJnBg=Wim zpSWjPOa*bh0uGS9Ze2tZgT=d+^aFfjQS1jGI&Kvb=$Ia717#t_VjL*WrdNZEUQke% zM>>IBIpqyZt?v8*J=xV)>-VoGeiA8|9Z!tC3MXqvsI!U{i2Jo1DTQtCdADr~$|Vzx zF4;{D%ug;9M6}<1OdvnrQ|N$LiIj0O zxqZW0hXjb$x2TQp0E7na1Tk5Mm5zPDqtS~O+%#|mYQNi ziSe{t2K(~?Nm@I0p9V5sjHphx=WD6tycoRR;qd-o_sO{!buKRY+?Sx5BD=w+v)2~7 zVU`2|6?uTb$7_zY=i%5qrq7BJ8vBOAi|#wue}JJsu@F#9@V5nrG}5 zO@2=Xn;TT)Ugx_puRScRq^PYGde8#kQKrkU>9!9z8*s)w43yju&$X%86S*VAF4=LY zOLfzz1)zh8*NUm8p z|IkWx722__TU)y<6E1&GYT4Q`@{9_Ll{aNzlN`^kc3e-;D{DtkkUJ1Vmmy(A6I~Qg z*S9q-&5*R1LB&~Y&fO$hA1&Uf~0MVKb;vTZfHG2`4=E_ zQx{RTf5?g(6{hq&xndG*C>`#FNI)k(p>g13%3O(Fs$qk08@dK}ro{oO_ZsI{Ct#rh zH{o16vs^(4>Pma?(0Gy5RLU>t*4aQs!O|0j!g`4C^RM-c_ph&W|DLcEW|+cf#5QX6 z&Coi6bNZ-}@5)KhiYu9#n15a)zRI6>a7J>6{e!7LKuTrR5v3jzy-*>ocJg2M0?iI`*(%hnO zllnzq$QZ^S)RYwI*1x8>k-wBTaBv}xEZ%!!H|;7{LH63XcL}PWEQCKabTq{%657rJ zk;jmkp16T+i>|IQp9x`zj|~u{Fz`%W@+YEzm;xU6S7$D@KX*<#NIzzFnH3G~cL6gJ}bH zw1OQ1_Qna9k7eGOw!d0@1@9-M6%T=fCwUqS+uag4wE?v zj*2LF<1b%&#v82_p;v$MZgt{l|Uf~T-R}zm!hbxEmT|xD)4x-xIaRi;>?*FFk)E@i1wbapjdlYEK#2< zS==wvX+&_YRX+(Mf9ci4(X44uG?({8Xle3<)a`y>qTJ@@$)M)*iHW3)nue43ML@xk}ez5_4+;+x*tNsr(w9%0*NC z_Ivl-d^wp4EiSA@sa@o1qHpV6Zrd%I!CukjZJ*qzktrtcFpeKM$sitN0%*dii&iJ zEUbG#>mhJvO+2Ry?OOIwHwNhP@a{2!G`&KvGF7HEkmVPANiBvuoa%bx1O9-D5RChg z8klb|nQD;}4ykHW2TD^{IBoW+H0Smz$ST?-$r{UXUzF?dKL@4!)D8VpbT+TnaK#q(xsd%?d$0b4@X8pte2(uy^0 zFrca$U_fmVN_Z~D#%odx1l)EmX0u(}Gnf?uKsIozs=IkR(mgr=d+twYNIwS4#8=O9icU8VubF zL?2GT(mW0;@A*BqBJ5R+3sMbG%%8Us0kVc|>xHJ*QR3ifdmm2bn7^;J#lP~tTQu!8 zY4RhstDASNo4NQF(q+r4)?`$2-7z5{3M%{{5{3Z6=xX)k*$+!A(W2u-su@upo-umncNLaC?V zL1zCjeAE&EFoSF%!04rDMf|PC7338&6h2!wngH6sqze&-4O;t;WQc$g5ZOzqN{v7r zreaM*b8Yoh+|$>33?*fT04a!)cii)pZx;FjAQm#g@l9YN8YC=NA(Cf_aT*MXtz0Q3 zS52+=99BWwj5*4`3^~nL&ftMi;b%2w`|rN8UDDkM9@>4iwH7glLY;1)hX`1_5M$0~ z#ESSmV!5F8$IGb|NDDZsX*C8tfl8r%G7u~>4ac$$(kL*Cs}~7x!nB~e%{YZ=d};xYls7$tD{YM)C8-mwax@`bIXxgX0x6e(He*>dVxYfNwi75Q>j=8RXbmn_$FKhZ zN<|0NVA;XD9GNwk+2)Q8`aXh$HO?LB!~}jt11rSnIeZ!+i0Q1yv#U%$ zH#5Y5^2nVc8hmo_FrkkGTq?*x78^YCRz6<Z~;v2YjYwD=np&f6Cr z4+_5*p-+=2Qw&xs<^NoGQCp`;muSFlzKb`_jnv?c3CJwj5Nmz%<6B7#P6UKRSyO`Z z*~aVm*y4Q$0LB0<_UD@7jMt@uCr4kMA>otk7U0NHZtnGI|KYPDo@v!M4(nsrnmTzv zQ51ZsY5noUNMxZ!Y%f27BZPIj&2nAWTLVtZSSoQ?e`WF>+Xg)bJdtu0F~8vR3drDE zj%qLAklslxVB=Y~*_S+L)+jI|xo$VDF7+j864VgzNrJUD?10Lum?)87LKILfdD8V*z@D>!76mh>Ol4tk#yetYx?-v+L zzln5NU1f-Fa2I)q+LFulcTP(UerH1YvQb4+fZbZ7f<9!(Co_o&u z|Gl-|Wv!WS&)(neUk3q-@)BsM1gJ1DFlbVeqDn9@2>CEDh~g+nKur^tvK|b~BVlt9 z5k)Bx5i&&wTN86DV;C68fEaaT4drg!RPD%cArwp@A?bBF%!tQA(kP6+#}tz&Qof2W zA0goImgg>NDVF)7>EgWF_MODy4SKWpkPfw{UZa%WR!L~WYsKTp%WS9TBO~#%Y<%G#4fztXtQ;P;7v|>L!SotjogMB{3mNTj zASa9qUfo#^FF!nVg&})|2|he><;EmMfGJrDpt^v;G;X*U^(=eThFVF*BJ>Hb$F3eu zz1uDyZZBr0y`z-e23ANcq&FrDKHVGfFc?mcXH;>|e^RO)FAygEIoWA z@lxn?gL5AEzrbw6c`J{->bOKU?(h1UjG0Bvyh19HF!T8RI9O_ufyyV9KH@6o!u?r) zpegN%zA4HJX)oDE7D^_pH>mBnh+p2Jd>SKn?&}RiQ=Sf{?K6;gG%cC+y!@PzEEMb0 z+Z&uq4dKM6&&1936Qj6Z=vyg&2*>{1es#pQ^zz9?tCp*d+qE6jB#z%F9Kl@5Ez0Lhf~C`=on_`Xe_-?cirFMU2_;0>wa4_(aujLTy$gojn+zH*krDV{c*!dx3!Nb}qvieg# zUg4*34MBXrsPGAa%+@Tqxj`KUmF&*xld2A}P+~)kkO0L)zV|PX-}za&GRK5HMst&a zQ6Qtd{^-I~$oGdWXJPrR&mczm0zR(MmzZGC5T!q-nbf1FNSGp@ghjPyVa{3`_w8Iy z{KxQ3mq`4N&TSN2rOjygC}zn(n7gvLxKiGM4h-wQm%=?dS-0^IXHhNcmu_phR6h39 zGTFco+2O5!e1G+FusGb9{(G$P`-7;{1(W@@5yk0#)}TE? z+f?@yBFxln#<^!>KCMtz6ktAG{!7;vFicE_N3w9qo zRr(_a_<|OmQYE0pB{Cn0?YU8zMOy5-x!3xaXKlQ*RH6!M+;weUKvS&fB`HPGUc7qlNL`E>Jf zQNZrLt}KPgV^d5#>;2(iF>5%2N7VuDnv)qZ(sMm)1>SBvVeq9oa{tK*LOBOT`tz90lo0qfLBb z8OTKy8Yz_^p(&D=nf!Sc-0(_Ol|%VNF+>d~e?V0?vtIqA!2-M~!NJJE%TYazz>zoo zxN66OW^6aN@v~B%nu?$WD@R)WJ1r4@IWNhZba{0bm9^ZXv9(8D!cMQ@#bofF0jgvU#v29|alCYCA|MB}yD!zEG^MA`Ux37K^oj^I_qejCQf*ci2R zT>SzK%b;=dqE1k-jlAiI+wsM5(J|XGlXXUQ6{iHRGDOy+#yQD3Ei^VXNdD~rdx~_5 zArEnVd~pnu1edl;-mdptQhnM7d^AHe>_^({g*KC8ulG(qY+Y#+U7s7e${HNP z7#)P_7cZpWwZL$dvVG!=wMzA+xe!~=GG?jagWq{0+XYXE%)MXevC@UE z$!C+2R+Z!Hm9I+5ip$dMa}K1xfB(u)4ZymhP0)s^hQTlGZwfnPgS3Jmu|_gE#vfKJdL3i; ziVBM!7vXAfXgFzaX*w1@EV3-xn^Cm(w9c7SnbE1Cnr5}Gu$q|BD-+q#*yZ>dXqE8anQ{lRaTOj6ItT+coF4qj{?43G4)EjTu>>Fc5EY3lJd z)^}=zVFgd|td`Xza7}nrxO~KDqvQutVs$2?IpeHM{cN4j8}w7?e2NFP-dbOK%I z)?f1Jy5paT;t%p-g?WgA{tV6R;V5b_h7R62OBcg4{#?#n=1C4$@%?Vhmy#M?hvC{p zl;~l~Z5t1rFj8=)ALroW5>_*9zpB-(ecE8oz{3gJ4lFyPWS|tqLW>}a#IB<_6pnTp zjn1VUZePz`?^y>w&wOL@H907|Q$BPK|B7iq(8heW(KX4{+|v<`@%77>a$m06ecKP) zL+vR$`w3iVyUC>DN8@FsHQ9mHXIWM$;MxxLE0>KM2N>PJh37?K$4jW;X=B?tBd%?~If zFQ{0l@YS3jFt;|3#^%OJO4~5*Yn9rQH!0SZS`V*_S>k!ouf*vwIMNk7yDE>bIbSNt z^wvGvYKg3*vX+^Pwb2mQq1JMCtlK*zUP)YezY?Y%toy1tvaB4mGNT%$uA6I@H(8rl zu2o-eD0iOtwF=iVuIQ$m$#5=2`mTpx^@D0q{(Q+=NppRxt;n2sW{5GNp!H*$`bKV7 zN3SYXrw-hu*td)dHPlx8XM{&JiPlInJ=I=wOw;palqM1~As%x5@@*+Hmcv@+)`P_l zAjRA0lXDttiZyOwyQ$@k1|^`qBQM%3n_Y~V1y5hM^xgE8)_jp;k?a%6o8!x-55XTo zzh-?sZTtK&DXAe5o!FkQ{3dr}xW|yEGnNEQ#4I3Sm$5H;Cw0(0ue<>!;Zm?^a&e#C z*kT-Jv^M=RkSs_DIz8qduftwz93*XAbo;h1w%YMQ#wKo4TUQ(7X7}>yGiOcpW$$hr zVTr4bxdrKn_jUf>nDPW%aZ2Mro%e=#d&p_h0hjGUqFupv&O7I`lx^OUUEJ9lPupFu zFE>zR0t`A50)fKYw$m_vVjJR49(W#Y(hh<8v-q>~j;ID2{rbQ(r8G4@HaE4AomsC+ zn%uRXqk}<+-Y0#}UB(OLqrv<*PG*eTl{0nAh1#ZK^+-&rj z#-0R*nBP4YJ#}n(O;b34sn!_OcdPg33-v5OI zpZh*PpYV|%V32`dkAaVCI^6HK5%SaFf0q%(fi@UnWf3VU;HhlrU~FvTXl4sqO@A=} zR6MYg)O3V_!KJ$Yz)C4S-3P{>G*{68X~@a)7}{Dhy*9FaW6b1gZFfHo44*3xP_#A% zy(V+Dwz6^LapkA@@dgi2zOQDcAp7wO$daEzLr#%Q#MZ%>jFX9liG@M{m5hvx&%wxq zM@dxtS9jnSKZO|xWXHqI?Be3WtM?KoSU1QnT3^^m6Z{AgVE8=2K3sM(Z-ST z=ODkw5jA!+bTGFAncLcs-H-eFjja=ipMv6kqCfwBuG84n{690>y%m4NM9W_|Jv?>ipNnUmf|F@Av+fv-o+?KWc%K7C_}={`1xZP<0ekK)^*3 znTsl@08aqS?*HI2fv;yjpFkN_IM+hS5`YCE7%5R<6<65pIb_c#9e6DVG>vETNxo!c zp8^9ZC~!vw-=c6n!Fq@)T}FnR6_mk_*s51*AQAYXE=AU<$$f z_g4!lX6{nR-#gupvG@=cPPJ(riNNn~Bi{cMN)J5ymug>MW&{+Kiwr_DgnwBIj33=R z{6AL+1J{H}rnnMhlaBRojR^U!82{K6F!%XOU!fT0dOz`hYXmmM|G!QBU%M&HOt^=* zj8PX4<9Y&BEsc(1tsM;Rgy|zFO`U1Avcgpg71fw>^~5Yxc$vlD*INGxmVRuELg|~b zK}YUCAtBk=?}4CPls$G%*H=01Y}t*+N_B7CX!Qy|E%zj}Ra-6G!mm!^YBnt~YeH=N zxz#iXbk+5XA*($Vvkrd&_r+$W{WMgS{`kh0Q}w*1_t`1|6n7_0-*11SgJfijzU6o? zgfui#P`xmAi*P*ZgZe}aG&_*SHNa<)>31N1U=RjJ7;4`EPhqqVm7 zg`3mG(%o1r-qIkn8O4El`rSj7&Z zQ)!IaYTZ%vA1{!2lCl)i1YY)6G<%$-dX?MvqSuhG^gf9z)MSOs@Cn~z`T5?%zGMys zq^8^AWLr3vqTPCqVHnlYPe_IHq!%#^dWT?;*@PBTiQ{X#n33v6qbbylam#cMel!B7 zt;B=7-8=ceDk@Q=7$xCrkz$UmXM%4|CM<)#D=4!YgQi&Yq%Qi;{ zzX^+^CEQ(rPz;x3HgS4pp1ef*<_bA!fOkQX#xU8~`!RZ{l%V_zRv31l1Jnc-?py6Q zjd5x<3s2uaT#?zXei3>PwELu3Lu6yVx>!SE};Evu{N7yoRTihfylM zuDPem9BYgQlBEQ^O<|~iQJY0aKX%ewRCJ}h8l*h=&e3KwcvX2))4@bltvR>M<*wBJ zsgXmt1F6oFbvJdTqUGFLG^+!Zdy?)%<)zq~TEt(RyEI}cZPo4S1 z^RiL_p3i+dzS4X~44pI}?R2eSHHDEtX5>zH%_{Y@a}^72CnR?^2&oE#Q@4Us`7OGE|o@8(i^urA4LfZxeIs% zN3=<5_fALZ2@FcSOM0*0%j|4fLIkgtJQA+1UP6i}Yw4otQ_N-}mC1iDdu={6shM}z zCo71E2Q+!zA2A{y;@K5UG;P}?+G`{3+T*mNyB;YCS-f4R=OfG z%MVMc%1w3_GL*&7c4lmk-kQ%BT%It+G`KlPI5qN{VBs|mY*uXqAtfd zWXni4(r?CNdE;l+hpJ6ix)tm|7+3dFbs?vdr_l_rROr;{_D*$cgKqe|Vhis)qWIbE zp^tcD*u5@64&P7IA!8Lr0}TDPjl*-R4}QrS=OSeNi1`C5;nI*!!dyD-{CM`}mBetp zkqs1?*pf(6>OuRkIcRR`1C{sQ-yvpG`m9$q9p#Q^dNsvIPr(1?p4&ConDUm+1 z$FtjST4|oHX-t=+Fe4-~kj&jD`MHVwE=6YjJ-9!fk~Dq{^(--6rq)5XjXv9{ zclEG;ois!5gqfolzu5Z0&en`iZr_z*SrHU`6{S@6Qd6_(%W~l+Nm|8bhSu21#sCHl zD8Sdyr$~>cB7_y^H+ie*N|E7nf`&|(l7!tf`eUf^}-j`t|;C(v}9^r z(V3b(--e3;$pl{8*X{4EnK=Av)fjD~t}hPXHH`Mcf9OqKz7h+A+|eHKzp&SN+E@<{V?%>rCM z+LT^C3Mq^=>S~FG#d}W!OfE!#J+#=DLFFTTC!m{Yi&(U{`7ffHC=b3%N)VU zmT3NDo(wZDs`#BY56D1)R)fs@{q)4bwIVxA#>$2~Mz0v2S{QI%Hw)f(nV#2EHM;_h z#l=Lq1zD`PoCEi3SKz`7hP%0s5uzV1BAgrqmzYPonMh8~Zr!qiwVnESgCjE*eoy%AH_AUc=_JIs2LuRdwC`SucV8>Ny_ zTOp*jX(i`_!x^z$vc+y@Q+4S2r9BknlI9*quifKr%R0}Ks1p=wFh>(!O{L4@Q^q+jTh?B&Ofoy#)<+*x8foa#q(;s|5<@t$S;<|#qn)^aaiBa8w;_qoNXau-c_mbkqo>pm+)L+^}4B@zvj(F zq_ava`p1c7$djMQM4K)(+8fJ+e^M#f*t?9754v1Pbn*ee$h(|&BD5NknX%W)Mui@| zm%kjvH3h}n=r{}`QgBy1>NbGhH%xk@Yl}$8&y8nAtbZb5l<4>2I;j^~xSW*j z5Pa4Vh+93qUnqSEtb4#OF8!rz}g z?4(}T`GtQtUF~Xsc{*a6K&ZaL&Cs&Yj}ClYW{}swbI!=ip?KE#<}I(WKb**j=|F_A z$U+Tx`S}LQE(DUG!j-uV8jZw7%l8u8rQrgMxgXHi@mbLno8vvoE%h~<$-SrN>u`Fy z`nlM{E!NbXOR`5`okn9%KgP0}NWX4Q)wP1@+eNwjNTe!EW<~Ks)w!2ruyT0_f&1gK zO_%nUNqpEtOYp~ZrSZorYb&OskQHM*)iT(e?WqdnN187{Lfl|=vXdxll*+0~G( z8QX(oOY@hfwqHBeqKCYkEYfTx*tt8`uFF(%WbgW?o}f{WH8bgMkl>%17}uxJ%eW=MODpvQH)PBKsEpK|FbcLsm$v1q#CcbEa?;Q!a@=<29d>XTuFSn=mbl^hM%Q$A5XWkAZRD{|Uhzg(q{1OZ z8N}Y_zXJ(e6@U&m@hC|i$%@etJlQx0VPLyXn-u7Hn_F*87CTLD5*!ctjx!BbUfcQQ z1Crn*l33YMx9Qb1pOTiU`peM>arq06HWSA^{v8vyDA%SmDWNpQ3zK66{EG{hYUv8LNKIY4cuixLf(wt__YZ>Smb*`~Xk4Qfw@|=zG4$^mLy;=jbF)WINPH@t zB>8QNS%|4lmMVy!YF8JMPe8GB{6Bgblw>3Cu`7!uCFW&(L-otIquUnwA;GmY!!=>3 z6mhl2DKy_c7upBJd}-RKb>6BVF2$H3%WQ=-z2f@9oQu`^PY;BQF&-S6krcFj#7Md( z=v>aa$YC)Zu%hmYZoMrlS|Cb&VXrfP2WlWWjDT_*qfylb1wL}4Ke>TaTX)9Qvo~W5}fUO;a?_| zNxw~+PLP}NL&C_i_FHukw19_=(|3Q}74iZ$ZxLQ5wj)e24-gm^MU+k&9J4KOj_%S8 z*?dxH{O4WO#l5b@ySRsUhscIR2tKhYw;ea7(`d#JBtFiIO5g%ly5jfJSBD4cyLHazBbQNfp0`& zym-N2>yhULBJC@_!v$F$*6xJjGnLMd%S+Q76xAkU`j-8Y`AV-PnD}pvFxXO9Zy#1* zh#%L`V|;*w7c12oPS_mP$d`q;T?&{Tnc+bkK8Jda7+uymh^5x&x)n~l>{285b2y=< zHx)PeynX1GZ-7<(L+Zoaukqc3SM8aw-Tw$1XiBLVGqB9De|uoKB;v4?rd&r<>F0jE zx>by#d9c?NLCG1PB}~;H7S5>6$-5*ip|LYnp+BBzD+o>?QlmM^$a%tk!KSrO^C#$2i+h3PeIA%L7^uPe3x8KHB4OSnb;g-9$xK8EagIyI83a<21{e z=reALv2p(%L+u+oS1ot;>W4B5trp4>ib2YZWzeOSi7k3m*ZK}%zudDHzFMs?TOG9P|-oER^lG;IEs zM^{m%=;1(Iv4X(kJd3wi9QMuf*`rYCa;b%tgC0Soe)_d_q0<#+trW zl^!#wx&Rg_O(dO8sJsGt>>%{)2V8bjm_GWwL^ zhHR5IEP_e4H7`n3;*SqyD6mG;nQO5iz_I$(B|Ek&SP#OnyhE^dV&%R*d);jED=Qi3b zHM2bssfXPlhe{`%j-xn1Bk66}7M>o@p)8no)2HMk#s+q|Yfx&%Nbr~O#o+M?T4!7I zUE)I*e@AP8rpVT)Tj@6DAf4FMf7|rkcqc#ij--*Eb8|h%q-K`vWJ{N>&T&O{z0%h( zEuQw1ep22it;d9OE6FdWmm4qbjIO0400lZ6uxU7=*M%YE>!AKr8_2?`5ul>!(o}=u zr9HeS3h=62dLEiW;7w9rtdm5j+|zdDTc63d-)V(IpL28KeH{ zBHm@rUqqVc3cllZVn@-alBP-$$^Uw>M)d+wVQ`ooK_Lmtc5B=g#Ps@xKAPED+&_(8 zwQuy5wf_-SqIUODJET6d7&jhJ{04{j70!~HTa$H+5>@n~dXe$qR9h*mD1UNX+k1&g z=_?y?;UQ9fPb?jEzb!Y8C-l@TU0Q+_aBhfxyOhBxiG4_AhUC886Jy{Ovha04Cu0SF6H}bprcFNZjy2}B@ zURE$K!JnzXFQn>EbowP!`Vk~3V)#AIl4yhIw_o@3bASv6ODW%L&5jHdvw|}NK%=kN zJ9rV9egG@J9HhZ1S#-I+#3&%+^${QU$;3^g6sOg!71x%oeL$tpx!#&$SLQAM(apKk z;S}CN@AIfwvf6bE-!ZvTX$h?{7WxY@I*C3>dtF3_&ETn1+pIe(x?;-A~5tKJrqtS{H~Bv2Og^JicA!>e-StFh2ONoCHY>0?*MtFgqhhuKonHW&w8%+m~DC_m%*G<8~*Zx8NM zhGO$5gq^q+XAy)hAr1TwMQkuX<${rp-;J+YM0D&dv6}Brgdp?yAfcpXjwbfeE zOxs`Rtj24)kj#_ev&HMM4V4C$52tKFjYg;*vr~B{j;l=JnvQqjD?YczP=fZgZHLe; z!_2MX$ni7wvt3lTVr2}|+smZu(@u)vy!WlG%sX)(cbk=q3q9;x>b$NnqTE)A7{>-n ztge{TUs4cOF&8qS71uLl;riucK6d_TLtnJ?W5>%?>Sx0#4CGYIR=%3QUFU^t23Ip% zj`u-t{ctlr=L)J9#o2b=6hf@chimjm1%zh>kVgAg>(R(oE$A zXuX0rso^qr6<1R^u1@)>PUcbWpGVF0n}K^W>O3-NrO;G1))T~JVtdoo>%|-|!g*$7 zo4!i$Heos+%So=V@D>-lB=8+B&XG$r)D`Oa6hWTQ>ab+V?}x&cG+X-9*9-mx?b#3S zs==~JRJM;WbabdcU$%Bm*EFhcjx|1Yb!oRIHm(|89#3wz%hR;BFSlC265P~Q7<#&v zxXqWC;nR6tWzyJ}c=S;=nY|4O^Mvn)H`gc4v@h@-*ulN&mnF<&ie%8Gd;~qyEu?)D zGgn&n)Ayh1@wp6{98!MtzAQpPgI_+BT0-?ZVKK-Z{497JyccL3h?QzpKtx=%j1Tz zq?!4S;?E*q3Er)xMIC;l(NFLld*Tr)KSMYxxY63}Pfe<+A64mn5!k%#M8H}5lElL6 z;|%)VaqrchH4~SPM~nvpl>&-NwrH5+Pm%7$(Y-w~TP5!Y4bRv~>{|_6Nh)sCp^FY8 z?FX&zzh-mVvrOuhE{P!bLUJt3!mm>4dbA+OM6Xs{QJ1mZMRz1ogA3?eH5ep(&)DQx zw!_|o-)dgU84Z8ASZP1NhONt~^d6HoUb#eyo3^EQ;(ej$q!1*&ItzCi=82{zmv8`K z&@EFdn9iUq1Bv1y-kZ_Mb{?83oyeNxtJXa8f078Fzv+g9-FN_4W|L@jJF{GBXdV|4 z=Dmc-&-F>y9w-m#ZyrReJkzIE8uPuG*AXWsv1W8)<~>0SSG)F}eL75}s|CV=eC$U_ ze-~JcnF}bX?;ffEw&#=ynQi;d0bS_n!P-t&#r9Nr&kSH(l*_P}Q!EMCD0?d^tQO$i!xN((GPy7O=s2#9Z(1LyuKe-adM89Chnzpk z%;B#JVE77aW`vEEYu*!v@Cnb}q%r4`+g487Rwe95my~Z@EDhF|yM6lBbIxNN-omTa zM-IHk-iN+Y<%wbWoFSY~&kSjiMeEy83wn|ZMRm83Mm2cDm8EsZO5#+PGybd5Or;8ORTtj#Zoq@l)u#y- zXZrZ#y!~ge%x8F^lHl2mQHWVDA*BFdfcL2y+iSYPty@{OoKxoTz1NW95l-lLp6yTQ zxicAo5|uUKHP86=-|42jf)_|@;OaudEPC$O#N32WBNJCrJ`g4d?cruzeg*$|;K_(x zW&;o3Sld&-g*Ss9`QJqx>~{#rC+wVwShy?e8}`eMxG4K9)k-K5Wp&e#<2qBX`!Dkk4l=22liyF^`3$G6HW7FyE7a%#8iy~AG|EmXlx|` zw3v;7Oo^}_tf*yBYouzq>jgp7;&Hem{*~7I!?g%hW10A|$et-%(TaGgrj$s{>F!aAakg#97C~Gy%T6~pS+REHg$I3_0>As z&~kT*%;njR1ul0tj-tdJA-_^oZdk$}r2yBErqBAy0k8Ms%LlHZ40={^wx#~M=;G_# z5!@;>fm}c4G}Oh7CUk`pkUFxJr?QB-n*{b8v62AMMO84#S=5|#Leu9(EjjZe9Y88>6!vs*b|K}a4>>>b@|FaZ3z3cNZHqfFwJYdmSWF*>MsqZju+ zC~l^nhxpZ=+yX{x$CaL?lM5Tf{k0wOFYWYRWV-jfIk@|)g6S2jeC}?ao~YD=*5b)j ztHT8&kF_PykTyu$kfJT^-@8%5r9Z&P!5_anHaL1T8z8E1>O0z zMUor3cc;yG9`m-%%077dZcx`WHhd&4&5a!$WsVg_fGJv{RQ z->K>ajR6kry%O-q3>1&1%b_5FWDEcV) zZIV%B90r?IU)A~o=~&-YW@5LglXuMdMp{z8WYz=f^xOg%i(%#^5J4VNL4)zo(3$aN zAGdSdD*6bPm3xu&S}fa*r=(g^a{PB{*@&VU=Sd#7z6B=uD}H9~U@tp-o+ZNsz7sqb zmy{sOY0DUfSF)!Gw4V|SWUj2g=bT5VZ+^}!p;)0v;l_^EIJ-$wVDzvbIBzZ^1cq(8`u1$t+=Zt;|J#@oHkyXHuf@_bzVj2+?7$V-FGs80 zsk>`tHx`ke&6l>3d#EeYGqmpp%FIZ8uDl`|jyGAf8$o$XoUc9i>ykKa*)nZDe3G9D zQejQHa~2r>COlPTSwmPF08nL10Fx-ItD7*+$sA>*l#IKZQ5bc|$K5id`3SKGi229YqqR9BOnaI0hJ=n`JdrXoSsur! z*t>OHnx4fv+{;B1SJTXs4NhyfO+!c(v5B6ltzwQm8y;Dzy(SqW2NXCrZ>*q$&68uW zT((oVigI_W!)L={RrxYOCS30uyoFYLxK^2UEQ&cafrp8NkH?l-Y9T!nWHR`Zg#nn| zJxt8KxUR`NnO%gPyHOc*@-l@}@~27$1AB*pnR}?9KlJ!sC4xm5$n_2N9yVwJf;>dw zA0nT2B8xi269w|%D1f_l4I))0a-HY#t<^0WCWkXSt@h=>sph5P;AZ2KWk=Zo%bc$q zQ6r%vZlSA5)794CZ5GNtc00{+1lBgWL78<9r~1!4dy{qAr`uCBVtvwW+0wXS@wxn; zEjOO)+7Id3b~5ogG#IpcDrG4Ovr+Inz5##WFFvcaoFHL~VJ%sIB8vK3vXB8Hg_6H@;_C-OMdYtdoZ>qQI?Eg7ti$2hHJw{rI^w&-QobZz- z5d8Ig=4AH8KgV2T2HI{nF|_>e4P$@V9PqQf5XLV*e#hO0=$~Wm#{mIgJ}1aUzk%s5 zOM0W`E2P@z%+K{B{NumJJpbSI{l9U2E!@Z$B*91OQU3;MzCsMB$&Sli5igYA9L(35 z{^fFiBMmI+gJj3;$>$j=0-KnLznR=$K&U;xg_}k`8NjT9#zC)t!7PEtFV>d3qY&~v zN6FcLXiC3v^%vNx`Z=--$IzC!-_3IU131ZieH9R_(tBvEKjZ&p);~e`IRiioKJcb# z{~IlM3eWH|?Gl&p*dpqygHzH_@j5?KVpRTJXoNrw#F+OaJq>_M-q=Ab5gg{cp5D z1E2+uTm)+VjTT4&q&&^tzxvNh`_CEt@B03CegA=mAEp0c-~X`hzlqQPi0A)^=bv2Y zr}X_l-uFMzjW7_|GVAs*TcVlk zrCy^`uXc8K|HOxFg^f^Ck4NEvB@+_oR=C3tExld2AKLSDOaq9(GCQlhR3DF!-`RDn z`O^yao2Lss1!T<#qsg!q&Bw0BLo=+_tFz(i%<9!yk2cSA?pIBw7^5US@HgrGg)Si4 z%EvvO5ME?QA>wvd(W-V+I)1K$&zTO1ex~YCIeqrLeXR>#x5oO$%AI?EbB$tl`^Ehg^>!g0>0 zy3Ab#j9}qaTU^t3X^sQjN~J;qv}#%5qjl$S-OP>pzf5v_9lyGL#-ZfHO@YkGc(OF4F=$pxvqyO9=p;k#M$V8V z0Wa$8j{isWUhTcG$0-zUOYIL_n$H4|`q*1k3(d&)c74}254wTihuo4*Fg!nD`Qs?Q|bfMk=I%cn0iR*6RM&F$^-@S_{9T7gfP z48Y6WP8knWHb9LbN!2`H$q&aHJ5MBO6thRjd7U;WE&JH{!9W((fGk(xvux=nF>@ZL z(=AaWNJUX>rq1}+he!8WMQcy4&Zom&jC+o!fH-jZmB5wk%Zr$8$ujOE+@75NgOR5x z()?*#WOyoqgHzEVNi{u`#QKl^$cq)!C&_zNR36QwIa_VqnqdqpTzEtm!_}G(p0)fL zwDTWwL#6_pP3{8^%opF`^u4%*fds9ptNN9m=xAYP!8Mz$=vs5OwfY&fOxZ6}vTr0{`W4mKx*-`*x=!hOkb7#-6?TCTb+)?k&bnseM41n0L=(knW^*`&m$p4U~?-?{yqSUR_%4r@7kTh3nq@pRzB@XOnxno zzyH;P)oqi(RN2PbGo`Y=AP=&`H;hBXq3Ln!>DKRbC|OsY4d-CPed78z2J{J!OtFI( z)~|x0^mb3~&}?lNw&;)NS#i9VQW!+M-a5NBN1{TH9f@D5oIxML4~&F#rtKPoPq~q8 z%v`hi4qJ2wOjQjp0Dkh;%pg#e5E>m2jh+IQpZgMVDQ!P@+;sn>e5De-*(K6tj^D59fVBO&J4z9owNpwa-@yn#OXd& zl_kjw#OaY7rg%Sl`7IRzc`%u0EeQwNGU-&6r>2njAY1tQ?%sJP&0C;xW=5O2Q#zogjLtMqmlRV|+hp|Lz=Enx6D#Jwd z-1K@}bBYj&*a>-x6u@WPR4)`y+AD7QHvI}x+71`J7{62x=B1CIJ6(QO1`yah(q4{} zq`2W~IPS3j47-gu&_W+bE~G!3^D59*mne1Gy^NHj-rIfTomoTo%v+@9fU`RzemLIe$9AJYY-Ku9KFSq;3L1 zkI9i!goNWkoje{$S{h!}e}SE{k~)px^NJ4Fbmvw{-AfX${axS9q#7%1;tL$Ua=LVA zGvNdW5WizJM`2`g`zAr8617czW z4(5v>xVD8G*{|0uR8x$(dR39fyUuhh*{xC9yRPlUn`=6i`e8IXT_mQw=VfgpjVmP_ zTXS=*esuj9*~)Xt4lY4op-bc9114RW@*^V~?($OR>6;=^7}D5DyepB@9DOQZEe1?7 z!l(jqBJxe7^=iwFx6m(~2KLI0rsy=wEJC*DE0}dSc%2l%m>=jn!_vYp*jB!}{{CM8 zL9yMo)b^Kv?NfE@a* zMVe`H8*CVXFH|VH1_3$$E%?y5Cwds6^HOSnXsQuBwZ`kb8_T&1oyaby!r$~2H~=&e-AmuM;A0ILbk1S$ zk*Ju3VX0v z$X*vMfPd0xHQO*&^qmg~#NW6jVQyq{ltZVst=o=Fq&84hmyUU65mjV~DLI3y1EiHp z`|FoHa-V6eoF9~%&^HEBW4qIs!_Y_=ua1~6whPM2T{rS@9&sq1oNjr|4yzZal|+T= zUe-W4GcORzCYgF0^Zy4o> zSd_k!a5ry}1>ZCZEEy6WJ1|901_sFUll+(K#!utkD_p=o=#{4Ghu=I91xWn}mE>h( z7s)+5bA`r9G*&F_Q{dKENaDh_RZpL0bFWMZnoA8OKdnx#uiWkq+Aa{7w~?DK!Rr)9 zDG?@KA3awxva_kDrtO_7FjM5h1E=c#{5~{%9D2iDZpya9Lk;-LhU99@SPB4vUewXT zEl9p*)I6>=+jaO$MrI!UT;n4*Mk0_eYp5w*qCHAxFh*UFe5?hZjv!#>84DQ1E6MQSROKp50 z=!4gEU>kZ6p=J`(x=G&YopSUMjnn;of`9 z-jp~FnyL!H^SdO)Tr^PnYSmboI52Sp*XtgwGDqOam3C;eH^<2HAH^aD{U7$eGAycZ zeOm!ZkrF|Wk`hEvx>Kb=Vg#fW>Fyj_q`O;sK)O4mJBJR5p@$q`VBp=JbAIRifB$dq zr}zDEu4{jQnYH&`v(~eoxYzUCD`60(9~u8nUP&=%661IL$SVspfs6Sazm8($J6!c0 zARTSlxB#lir*`aUl&A&-8?*$~=7t4NBKUlBr?Axp%JS3*ol>$XFtFA*zYdu?*e%(s zNx87*I%Hg^ER=RM*z_vIO3oX+Y~3q)K8XhCjp^7i+Z`w;}=nU(V9RWjQw3(td;6}3U>X`uZlN@V<%l6HvvjR6kRM%+on-&S4Z=_q!!+PXd~nQl09y(tkmJ-f?cEj zqH<5c^>U1T3w~;ye8SMvJn`0C)Uxb=McQy9GOzQS;=(X$lUJY3NF-G;c(-QqlSfV? z3oG3}9i?_}0QZ^pZuDqqsAf32HCZ=8efw#@x=Pn@)!1nNE}eqKT+|ox`1qaE2_oHN zV-qSpz@ssfu(zvEJS|{S9Fyty0s}HK)3iF&Yz@CpBO^dk-ICMKW3u&N^r(1$u|-*r z;wE|#(T23Q8)h}RoQ}Pv%7kXGK~h3I+PCjO{x7uTes-GRG1IHzuG9K z$(ue1R~X6bto`K7b?PSw)CWx-<>F2nR@o<~;h2Y{VE`Rnf2ro(Z!FxxnLv z8yw^g)8?#(P5obtpkQ2+WDZ;3g;7&)`mBk2g}gkD#)!sMjNKeyQHu@sZ!HbE=^<&( z3{wOYtKnQ?_vWhJDe09R2-~04r-wW_Y{`Y!Q8giCdLBMicz)ANwD8Q6ma(S;YG2FK zJN;~^c$2=>@auAZKh9B;$v*ks8;P~l48P$@5D*cA@%98NrdOz2V%W96|u8BF) z?GEeiac}ZE)(|`hzyb%O>e{O5^({UML6;LQV0!pdlKMiZwzdmylht67JDKAj52VOr zCgJWxsO04)xWTUn&wf||OK0}qglTDC|E%2xbXPYF_0@Bi*0|U$64)23lsQl7rQvO$ zOyMV8IE79M?O4ir>PBkCq)`>lzUer@$FFjvu}vwuFJEfhr5i**w3sRo0W4L+>Rnw3 z9TcJd0)ritAW=X3O29G#!Y6h)13qdzow4}3kw{{6-l&N1H*301mEG}1=W(ytse014 z@$_`j!s4hKjXl#g`{<+w< zdG$8}<~f2;c(?`~}PGc^4rwD2wC>*?O0G1Wwi{_29ri>CXk1q-B#>;uV5k|Q7thei|WnGtQ-MuI+yjmve)-Rc4yZ7M|)F^ zS{8CGf;>9GFDB(EG|6vf$as^~irpEDbh6`g-K^JQ+TOOcl(}drUOC@Xm-kPRv7_Wg zk-xD7>MU`J^lJR#*!21^YI*zMcz4w}QCz8S`_^KL_OO~_x6muWYGw4;=Abgu_ahtJ z^bIGCIby~mT1NVHTUW4og5d{v8_{h;eK{*z9DF&VkK`AwQvw*YW(f4)V9uF{&O$Rk zRe<;`R#DqI2~qOeH|P9h7JV4a@1Y=?+1Pg#Ch?eYPgfCTR?rKpvX-;a8qO~xl4hSp zlbF7COH!e-=ounX3F_w$A@PHAMCPH2e%FCpcQp`D<&|j~Us1%b*+#FrewNyIt#@|$ zZY}PrB{H6bxdBh#WZ$m>s=DvJS57iScSWvMrZt#Q4ObZSvjWUC6kPb#wX(d_Udu00 zwzoYV`U~UK^BmJ7FHQV1dX0`xrYpyEs=8l6lZ;U7T}*1w>!&vfI0-4OErt2VZ2GEG znqu{Pa=s}Xis;{#e*@?=cQWQfC!P*-SUeBCzI`&HtOm}A&+qJd#CxrGoIwfHKTLtg zR`U_slD<*U<(r{a$ATamm(;8SpXaJT_OAmI`Mz2SLtsS7l#KI};j6H{; zSRz*oH)(CRBN{*GXW6-5zR%Du%}qvn3?b%jx?dicc4K|I<)HllNgT`U4relRqpISB zx#gp@hD@6QYM7Mv3CSV@a4DR(!`vp>)Q^!O7vd%HmC}<%^+hHsIrDshSZG=k-K`^s zC>B}OY&Yo4C3s46wR&o&+AJf{kiYz{7DsU6W%jt+va=xk9lr3+b-i47<(A2D){uU) zTtZSN9xB~wg(`ee#nZhM0h2bS!#!x*1r4TN7`k0wn;utAZ#BmwYG}-sxHoR6K7=A1 zK633ABObtHN7Cl@N3$`Hody=AF1TwmJ}LYA19sFH%?nWOqd2N<)~^;sMLss0-glWw zA}O3$>7bBl9uVFwRKu?o$T5mtfV(f3U$j=h$MJ^X1Gry97Z$&{XCfOZ`X{zygONNlPxzCquY_ zHBSSI#W-)~L&1jh8poYX$iJVnaOO^7oAmj8{mwO=>$Di^buoR8W21W0wGDo9Wq~gx zRbC#>ZP^*ar3)Hp7qo4&b>G~}r6#j&GafTft#y->D>2I@b+QZ&x&Dv2rrDnGal z7FPIIjNbn;8*68w2uR{wcQLctf0@!ARkt1DM1jp;r-LJuH|fFF(6elTAqI_hLoQp~ zwOi2vTMMhINAUZw)=$gMy6xB$Ewz}%%UpO|g$ zA)K4s?Epm96clq^RYE3X9l;7~DWs-Id!)y6WWptAUGkL5MfsG{l6J;yzh1U&{MSmq7r{?A zAM@RG!JC`VGE#}i5cA%*HKGRIqtN9@5BOxo{p&P*65&uTdapFaYkr_`Vw3lo-6E5F!}Y6BF16VGhGM8yn5%Uzy1DDV z=B0DWxCx@s*!)B8BswCsNT>FeAlBr;{)KheYt#>Tvc9+W{t}f58l`g^!Xx+d$J{Wk zNj3CG7Bsu(LyjC4)V4<};R4=lHBK|PEds0M8GPW0visLD3j|C_Bp10289?`JMV83L z%swuvEvOT50ihh>x6{`H8x$?7Cw z&V%cIiqCqLxBh3{;qMS1)X2Bn8;{VZHD-It*G{c2b=Si6t<*Ayqm>y8gEzu^qo%5% zr_`@~k>v%uqeBZc-ZU4efTxFc3z_+Mim#`a$Zj?g8$$O{Wm+_sqEjm-y6%rcCs*p$ zLU7y{E+mfNLR=}+ddk;yI&V5WJ#Grj+5(0459Q6_THDYAO*?~T4(A$>oWq(ZnGZ=ft4=3*SY>9U*#-AA(#RlCEHZUP) zB3baNRUcc)11BUGKl!dmFOKof^{h7chiUI^=4IXcqv<|bnC{Jt744CLfyi9nh?7By zp0$*%fAc;9!n$Nlk62F$rGFRjsA~BXdAE{7-_w5vi5I93bGc+ri|2le(wC{CuPH_i%|)4UpoO%()-U;bRNS&LG+b(B&q>qmCoS5s0Qxl~ zq9)C~Ape$!N9`^|uqpPe5LItD>8#Rrz(iDY^?`+n(6B&%dGf|R)rPqOPbo!I8O)7Z zYTA>coAga{&`7z6eF`GwJXeN$M{0@e$9w{%L+BzKV={4Y=Z)?dLwn1tw-r!L2j1tK zzf(YxBX-V7S%Jg%^PH7%_|7>PQLm>IrYD<~sA$aBngjT+ih(WrF$PAl_^>;e{%v_E z_M)reM!+@FfwO0Wz+xl$Fq!yEoeGZd_>DozGi?Xj9mg6fp^JHs*Bzn_H^0s82l0hwkWF;`Hv320jRSF2wKD` zKdZJYFh^4xJBht&e6D9ZPB55alV2(O_z-{Bv_;fklsmXLGz5$tsqPra!8OdWDwV)) zVx3R%4MWGT?05%CVwJ_l;tO%ZyNw%dMfEd{D3KY1*x>*Kkob~eHm@V5sBNT9HkT*5 z?g@T~so#}t@vT|qS4Ejp9O$`!%adVdhiKXFB?8qyh7YD(#-tJGC72i_tfOaOHTJf` zPvY$Pae(8w$)j5{64qGWP=B&9KnFPD@jn7jQx}CBHuoyj6xlPj0jlEau{6n17jx3% zC*1dDZ2EfXfITX2U5PiLvP|ikX6|Ytd{|My`q7c0U~?)hfb$DNGWI)w zkraRIV-x@It0bYYG)G~@9PMlsC~8%6h#7t(2D4BgwnBMjduevDMPxPP`#IE^dExu) z?rpQaJlO(kwm^#^#*wiDoXfJ3E zh75~pbbVi&IvkUQTwLNSNs^0spO;&*p9; z*#JKN^T>OX;-L|r$5h0Sg*iYOr8#jFzksR-_fuqcm-K;Ywu}>Zq0xzHAjV}3W#Pm$ zfm47q!cuF4ljKIQ?DJEu0k+8N6Twc)_M_1pV9(8zhDrju5XO3p`E?O5g_)wyeQ$l7 zj>hpE-4iGym)R3i4!1qcAlqpmDU{pycZk$j;mUCt&=i7w0+ck%4i;C9eB*^TG-7KK zGJjg&$=4j3GhbZQ>5}^`XsGM?}O6BXI)E*tcr}{Zyhqa$E6Pz1(5>!AVCFJlZl~>3hD|Xeq+Y z3xhV&3JRqKW+QaNFp@M3fs|(;ca)3(WGF<9=o4w1Hc5l@fC_1v`a(k#6T^(KS_<}! zBWV?`X4=-*@qk%?Pi7oCjWO@O5}H^R0eQ;HrwZqjBChpNb|#L%g89e+z9tuLPpuv7 zuzitl#KN4@tR*OSt8l*DEY%@6N}B7_upSq`bUc#*G~ibDl@idJmF;)Yyoo!F3an7h zSj-fCNG{Qi1OK+K_G@=r@G_6LitYFV>}thmVpS}tOKtiyQ2!feAZ2HJ;}Iu)n;*fP z)%oPx;|>8x=f_)@0ta{wNgvggh`zqmsYWs>#nKWBN=pgoloyA&{prSL;r#DfvCCkb zUG3i0m7J6u)(JRQ%eSX)CMz#H+-}pr@@&cOM?Z*^n$k{V=iyBCq$YkABVT`j9rZX= zJ#tzJN&nis^5tR>=RD`a7#^fuB^@IOqL{jJx7>(_0Q&jfTv(|c??F!0ZYHK&C#mkZ zvIb(3V55Vk5=ennG(FVC8TPxyqxfSK@|RJTPrR^KC(NpL1hH5XwTB?bR- zI&--JrD&co>W)UkOkvR8OJz}7P7J;(^ z_bAt05L#soXhmC>$X3#nCXJKV>Q4bVI5it9zYd~5MosM{n@Q8jHl>TlCo7TLO>>*n z)U3XR&PPOn?ryE5?U51-+lxW{ieEJbxdpmAnZ85gXSgq8$8dvFFhpG$o8!nWt~*JY zX&cNeF5h9Ktpmv>D6Q{jRb^#4FTvoWE7uFg;l3e$-Dy?t+fGvalN~sojqJ#1r9&$w zMD&@{?s+;YSY#J|-^=E$JArA8i!Nx2@)_X0WUu5QGoX9lv;k}C3rTk9yo<1lDU!xj z7eJ)|LLP|6T}aN--r@y2tcQN{dP3IBA4F0ZGPV2*8TjvV;`Zbx2D|zxPp{ug-N~c1 z4e45*kSOxFrKHU3sNpQ7Dybn2Pb}SjM+@cJc6io8l%}7aAQC@|=E}lq>lT`Mmo1XU z)p>1Vm9CDIP?LfweV7dmh(YHo0Fj|frJ{CO43 zUEz!xw0Q7L{%}f+#3v@QHHkKzx^-zQ_e9Te7^!#y#9hYbu;apl+nuWv8ifLIO-q?< zpNE`-H_AN!-7XNvLNd1GC=CzwW1YnuZPtBQ^4*sJj5t(_MfGHJnDn*CL^86Vp$77i zosyGB@!F|9HOF#?)CBwng0PHon4k7TS$ZFve} zG{z0G>P@BbWEMnKS_CEBZzzeeC^^8>a7;I1CtmLW?vmiT>-h zQ0xFgy2C@IFa``+T5;P){C#VO;CdQry2Hk%n>~%x-6=%vu!4=V`-#VuQ9)i~BT`#r za;XgrpN_v{v!l+ZLq`TV5N{@vaBzo=^*#LsObzw?-$V-9&v>Gav^`xDoCkfD*F7AmD? zFK?O$R=B9I9dk>WjVrsIsg4R)AtO+|E-4_M_dY)u71SWMe?_-KXm2;S#i*X_oI6R7 zf5@EarH1n%b8n6|`-B7Zxt18W4T)eDxT=?OTqrK$y}dluNgtx2$IS59Iu^8vE27Ly zeqFm)QDDMisNuF;7)^39Nv}6ks0T{NI^7Uqtp9y|6hdsWC;*}5RaQd<2JA>fh&V3h zy_n-)c(&Y@is$;z`a}z;kUji7^~yz*sn0Da&GZtS^$-!dg0{I?=n&U{)6r~|((o6yS8P?B^Y zcM?APsG-j~^*k4BW_RT4u^Vtro=0RE1tk!eSJG&svBonmJ26m$`jbt;O>JogBy6qYX1nXrSWd=V+7L2JnUtEIbwepww@tA7u2Qo(G5?Sh&1v9Yar*3Z!~R>%Ywn>#m#b^I0*c>x~O6^iw&tjHIf1^bcu!GkJvJ zAsK%3JsPpPgempeE9@*t0^=s8NJ_y2c~y5N1I}m1esiQA0DVRbS@?E(zyhL{gtf01fX4=(S~o?OP9ECMGEBQCAnQ0dA%+GWx5iUMWI5A*M34~j;qxF+dPR@aPu^NuHLbJoXxCf|Nh{Y%f`kqb)rfD z#POQypvPt^jcnNtd{Oam<+Lr+GXQMn>sANoKJ-`Zl*a>j$}TnoZp5_r|8>poV!Tkd za@ts=!}%qDFEZ`u`vlrAzh^ zHQ4>;(cS5yP0%lgr@~xsB$)$NG0)8t2`gK8#qZ4RG*GttS*@ppg^h_I0tVIdBwz)VY_pI2kCA;r2CT<{2SP4#Xbj?L{YhTvuEtklklM_ms zohXn?y`fuO_%-uiQ}NF^`TpKV62z^<_U_MJ3_55&yy%}7A;EoI(6O!2tAG9f?=SxP<0*00hj==1Yo)*L`0I=RKH%RY@!vs2 zWBBhF{C5ogsD%FuIj|#s@q#Vp&jD=T!XH!?Wy#=%hWswcaQdUo{>Sx8oVHBzL6Lfe zpZZAI3sCWfe0MYMo2da-KnIHZNRp1C6ZfH^5f*+d)#I>;mw8A3cbzQr#MfM|1Om#z zeNb%VM5&#c2N=z-X1(QF3y*wx_IQD93yZpR^sVTa|MAW!@d)BV?cx;mvXsmm>E5pA zzCWdWB&TQAhFYS0n0-OOadNnuvj6*4efVfK@g|_*U6B2{f$L+2508LX#iKhO#$brI zkH$h&yM>E%8e%qzM}>PDPmSpQXGeWY=sy&yx>&Nkh{LDkEn2J$%$t`Ug{aEZ`(QjL z$@)P0loT&U+!G@z*1Y3)d>(5__Hwg2=s9Wle* zfu{_FzCetG9i|Y+SBrKM*8on{X-81uQh8FY4J?_EFN(Q zv{?7&FU}EQMgsnHW8^!d4DClWy=C>Y+z`??FaI{$zCV@P2dhH#K-w*o^=G=Arn%PV&*2XIphhQcs9hd-l1&awQu*} z$3bNHgGcw>)dXJfOZ=^$!Az?N2qZ>dg<|Sw^!As}>#_zGKnH7Tf*rgUgnh3%j@=Zndnc^wQ9bw;0;g%f=h)0ZpVNrsqr^)v zZZ93&f{_$6#af>;07UC=Z|`R;H{F2{hp(6g2{LX8NCASc0NDQ5G^LEbvw&F+p<;Q- z@b~!zeiy4nqaVKP3&7;!9PslBH2~tlSO=fA|6A9v>4An}gwR;=*FeJ#&-w(6&wqO5 zoLdt0x5=*j2Fz;74lXZ4_MZn;ug~sp{IS-HtzQOZ{|b-)ArxUi!`G5J%4i)x!w08p zpNPMw10T&sS4#fv)qNCz+f$kUayBa9&x6JyzEs7^13%0DI^xyeTpi!nK*LUKI}sd= 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¬}f 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 Xbo(25huZ5?;7?Ij?LqFn$1na5^9K~u literal 0 HcmV?d00001 diff --git a/static/img/tutorials/fa2-fungible-temple-assets-list.png b/static/img/tutorials/fa2-fungible-temple-assets-list.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7d5190693dc4618ccf3c7aca5abaa45b30a391 GIT binary patch literal 103821 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%0A%m&$Hzr#nB1w6=}^+vV>t8a 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 bv?nS}sSPD~r`Hl7;G?Cct6KTsW!V1!vG=;g literal 0 HcmV?d00001 diff --git a/static/img/tutorials/fa2-fungible-temple-manage-assets.png b/static/img/tutorials/fa2-fungible-temple-manage-assets.png new file mode 100644 index 0000000000000000000000000000000000000000..305159f267d8cdbde855e9079a97b2fe0d05fb72 GIT binary patch literal 48641 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 Date: Mon, 22 Apr 2024 09:53:09 -0400 Subject: [PATCH 12/37] Screencap for minting tokens in BCD --- .../smartpy-fa2-fungible/deploying-contract.md | 3 ++- static/img/tutorials/fa2-fungible-mint-bcd.png | Bin 0 -> 52869 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 static/img/tutorials/fa2-fungible-mint-bcd.png diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md index f558c602b..7be7680a9 100644 --- a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md +++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md @@ -58,8 +58,9 @@ The contract address starts with `KT1`. The block explorer also shows information about the tokens on the Tokens tab. 1. Mint some tokens and send them to your account from the Interact tab. +For example, to mint tokens of an existing token type, click **Add**, select `existing` for the transaction, and specify your address and the number of tokens to create, as in this picture: -TODO more detail and screencaps + Specifying parameters for the mint transaction ## Interact with the token in a wallet diff --git a/static/img/tutorials/fa2-fungible-mint-bcd.png b/static/img/tutorials/fa2-fungible-mint-bcd.png new file mode 100644 index 0000000000000000000000000000000000000000..f2cb1410b817f224a3aa05a03a004e9d50d8e048 GIT binary patch literal 52869 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 Date: Mon, 22 Apr 2024 09:53:13 -0400 Subject: [PATCH 13/37] Next steps --- docs/tutorials/smartpy-fa2-fungible/deploying-contract.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md index 7be7680a9..5b9904c04 100644 --- a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md +++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md @@ -100,3 +100,10 @@ From here, you can run transactions on the token, such as sending it to a differ ## Next steps +Now that you have an FA2-compliant token, you can use it with all kinds of Tezos dApps. +If you want to continue working with the token, here are some ideas: + +- Implement an exchange rate for the `convert` entrypoint +- Implement other custom behaviors for your token while keeping it FA2-compliant +- Build a front-end application to make it easier to interact with it +- Add other token types. From d2b74329f3703e1d4e5bfd90c1b49a806c9721bf Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 10:29:07 -0400 Subject: [PATCH 14/37] Simplify initial ledger --- .../smartpy-fa2-fungible/basic-fa2-token.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 1acbb5e5c..831692c1e 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -177,11 +177,10 @@ This example gives 10 of token 0 to the Alice test account and 10 of token 1 to ```smartpy # Define tokens and initial owners - # ledger_fungible: type = sp.big_map[sp.pair[sp.address, sp.nat], sp.nat] - initial_ledger = sp.map() # If I use big_map here it fails - sp.cast(initial_ledger, fa2.t.ledger_fungible) - initial_ledger = sp.update_map(sp.pair(alice.address, 0), sp.Some(10), initial_ledger) - initial_ledger = sp.update_map(sp.pair(bob.address, 1), sp.Some(10), initial_ledger) + initial_ledger = { + (alice.address, 0): 10, + (bob.address, 1): 10, + } ``` The type of this ledger is set by the FA2 standard, so casting it to the `ledger_fungible` type helps you make sure that your ledger matches the standard. @@ -267,11 +266,10 @@ def test(): tok1_md = fa2.make_metadata(name="Token One", decimals=0, symbol="Tok1") # Define tokens and initial owners - # ledger_fungible: type = sp.big_map[sp.pair[sp.address, sp.nat], sp.nat] - initial_ledger = sp.map() # If I use big_map here it fails - sp.cast(initial_ledger, fa2.t.ledger_fungible) - initial_ledger = sp.update_map(sp.pair(alice.address, 0), sp.Some(10), initial_ledger) - initial_ledger = sp.update_map(sp.pair(bob.address, 1), sp.Some(10), initial_ledger) + initial_ledger = { + (alice.address, 0): 10, + (bob.address, 1): 10, + } # Instantiate the FA2 fungible token contract contract = my_module.MyFungibleContract(sp.big_map(), initial_ledger, [tok0_md, tok1_md]) From 190da20487dfb1f265e88306feac97a0c423e58b Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 12:02:21 -0400 Subject: [PATCH 15/37] Try out minting in mockup mode --- .../minting-and-burning.md | 65 +++++++++++++++++-- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md index 991620f9a..c4859f199 100644 --- a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md +++ b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md @@ -2,7 +2,7 @@ title: "Part 2: Adding minting and burning entrypoints" authors: Tim McMackin last_update: - date: 19 April 2024 + date: 22 April 2024 --- In this part, you add entrypoints that allow an administrator account to create tokens and allow users to burn their own tokens. @@ -124,15 +124,13 @@ Only the admin account can mint tokens, but anyone can burn their own tokens. scenario.verify( _get_balance(contract, sp.record(owner=alice.address, token_id=2)) == 5 ) - scenario.verify( - _get_balance(contract, sp.record(owner=bob.address, token_id=2)) == 0 - ) ``` 1. Add a test to verify that users can burn their tokens but not other accounts' tokens: ```smartpy scenario.h2("Burn tokens") + # Verify that you can burn your own token contract.burn([sp.record(token_id=2, from_=alice.address, amount=1)], _sender=alice) scenario.verify( @@ -161,12 +159,67 @@ You can use these files to verify that the scenario is testing the contract prop You can also use these files as precompiled parameters for contract calls, as shown in the next section. -## Calling the contract +## (Optional) Test the contract in the Octez client mockup mode + +You can test the mint and burn entrypoints in mockup mode, but you must be sure to deploy the contract with an address that you can use as the administrator, as described in these steps: + +1. Get the address of one of the existing bootstrap accounts in the mockup by running this command: + + ```bash + mockup-client list known addresses + ``` + +1. Replace the first address in the initial storage value in the `step_003_cont_0_storage.tz` file with the bootstrap account address. +For example, the file might look like this, with `tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx` as the bootstrap account: + + ```michelson + (Pair "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" (Pair {Elt (Pair "tz1Rp4Bv8iUhYnNoCryHQgNzN2D7i3L1LF9C" 1) 10; Elt (Pair "tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi" 0) 10} (Pair {} (Pair 2 (Pair {} (Pair {Elt 0 10; Elt 1 10} {Elt 0 (Pair 0 {Elt "decimals" 0x30; Elt "name" 0x546f6b656e205a65726f; Elt "symbol" 0x546f6b30}); Elt 1 (Pair 1 {Elt "decimals" 0x30; Elt "name" 0x546f6b656e204f6e65; Elt "symbol" 0x546f6b31})})))))) + ``` + +1. Deploy the contract by running this command: + + ```bash + mockup-client originate contract smartpy_fa2_fungible \ + transferring 0 from bootstrap1 \ + running fa2_lib_fungible/step_003_cont_0_contract.tz \ + --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 3 --force + ``` + +1. Mint more of an existing token by following these steps: + + 1. Open the file `fa2_lib_fungible/log.txt`. + + 1. Find the output file that shows the parameters for the call to the `mint` entrypoint. + For example, this logging information shows that the parameters are in the file `fa2_lib_fungible/step_028_cont_0_params.tz`: + + ``` + h2: Mint tokens + file fa2_lib_fungible/step_028_cont_0_params.py + file fa2_lib_fungible/step_028_cont_0_params.tz + file fa2_lib_fungible/step_028_cont_0_params.json + Executing mint([sp.record(to_ = sp.address('tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi'), token = existing(0), amount = 4), sp.record(to_ = sp.address('tz1Rp4Bv8iUhYnNoCryHQgNzN2D7i3L1LF9C'), token = existing(1), amount = 4)])... + ``` + + 1. Use that output file as the parameter for a call to the `mint` entrypoint. + For example, this command uses the file `fa2_lib_fungible/step_028_cont_0_params.tz`: + + ```bash + mockup-client --wait none transfer 0 \ + from bootstrap1 to smartpy_fa2_fungible --entrypoint "mint" \ + --arg "$(cat fa2_lib_fungible/step_028_cont_0_params.tz)" --burn-cap 2 + ``` -TODO how to test mint and burn? We have to set up the admin account, send tez, get the params from an output file, and call the contract. + 1. Run this command to use the `get_balance_of` view to see that the tokens have been minted and added to the account: + ```bash + mockup-client run view get_balance_of on contract smartpy_fa2_fungible with input '{Pair "tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi" 0}' + ``` + The response shows that the account now has 14 of token type 0: + ```michelson + { Pair (Pair "tz1WxrQuZ4CK1MBUa2GqUWK1yJ4J6EtG1Gwi" 0) 14 } + ``` Now you have an FA2 token contract with minting and burning functionality. In the next part, you add metadata to provide information about the contract and its tokens to apps such as wallets. From 96aaf822ca09639a9f84d4f25c1bc762ea9e61aa Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 12:02:30 -0400 Subject: [PATCH 16/37] Simplify --- .../smartpy-fa2-fungible/basic-fa2-token.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 831692c1e..02c4f21d7 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -2,10 +2,10 @@ title: "Part 1: Setting up a simple FA2 token" authors: Tim McMackin last_update: - date: 19 April 2024 + date: 22 April 2024 --- -In this part, you create an FA2 token contact that has only the basic features that the standard requires. +In the first part of this tutorial, you create an FA2 token contact that has only the basic features that the standard requires. For example, the standard does not require the contract to have `mint` and `burn` entrypoints that allow administrators to create and destroy tokens. In this case, you create the contract with all of the tokens that it will ever have. @@ -31,7 +31,7 @@ Each class creates a certain type of token contract: Follow these steps to create your own token contract based on the `main.Fungible` base class: -1. Create a Python file with a `.py` extension, such as `fa2_fungible.py`. +1. Create a Python file with a `.py` extension, such as `fa2_fungible.py`, in any text editor. 1. In the file, import SmartPy and its FA2 modules: @@ -132,7 +132,7 @@ The inherited classes provide all of the necessary entrypoints. SmartPy provides a testing framework that runs contracts in a realistic simulation called a test scenario. This test scenario is also the way SmartPy compiles contracts to Michelson for deployment, so you must add your contract to a test scenario. -1. At the end of the same file as the contract, define a test scenario function with this code: +1. At the end of the contract file, define a test scenario function with this code: ```smartpy @sp.add_test() @@ -171,6 +171,7 @@ For example, these lines create metadata for two token types, named `Token Zero` The `fa2.make_metadata` function creates a token metadata object that complies with the [TZIP-12](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-12/tzip-12.md) standard. Your contract can have as many types of fungible tokens as you want, but the examples in this tutorial use these two token types. + The contract assigns them numeric IDs starting at 0. 1. Create the starting ledger for the contract, which lists the tokens and their owners. This example gives 10 of token 0 to the Alice test account and 10 of token 1 to the Bob test account: @@ -389,7 +390,7 @@ Follow these steps to add tests to the contract: The call includes the `_valid=False` parameter to indicate that this call should fail. You can add any number of tests to your test scenario. -In practice, you should test all features of your contract thoroughly to identify any problems before deployemnt. +In practice, you should test all features of your contract thoroughly to identify any problems before deployment. ## Compiling the contract @@ -485,9 +486,9 @@ Follow these steps to set up the Octez client mockup mode and deploy the contrac ```bash mockup-client originate contract smartpy_fa2_fungible \ - transferring 0 from bootstrap1 \ - running fa2_lib_fungible/step_003_cont_0_contract.tz \ - --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 3 --force + transferring 0 from bootstrap1 \ + running fa2_lib_fungible/step_003_cont_0_contract.tz \ + --init "$(cat fa2_lib_fungible/step_003_cont_0_storage.tz)" --burn-cap 3 --force ``` If you see errors that refer to unexpected characters, make sure the paths to the files are correct and that you changed only the content of addresses inside quotes in the storage file. @@ -500,7 +501,8 @@ Follow these steps to set up the Octez client mockup mode and deploy the contrac ```bash mockup-client run view get_balance_of \ - on contract smartpy_fa2_fungible with input '{Pair "tz1Utg2AKcbLgVokY7J8QiCjcfo5KHk3VtHU" 1}' + on contract smartpy_fa2_fungible \ + with input '{Pair "tz1Utg2AKcbLgVokY7J8QiCjcfo5KHk3VtHU" 1}' ``` The response shows a Michelson value that includes the ID and amount of tokens that the address owns, as in this example: From 8b865d7f7093847c3591259dd11a789e27a4627f Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 12:19:54 -0400 Subject: [PATCH 17/37] clarify --- .../smartpy-fa2-fungible/adding-metadata.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index af6a37ec9..49c7e02ec 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -2,13 +2,14 @@ title: "Part 3: Adding metadata" authors: Tim McMackin last_update: - date: 19 April 2024 + date: 22 April 2024 --- In this part, you configure the metadata for the contract. Contract metadata provides details about the contract itself, including its name, description, and what standards it follows. This information lets off-chain applications like wallets and block explorers show information about the contract. +Contracts can also store other information in their metadata, including the code for off-chain views, metadata for tokens, and information about error messages. Generally, contracts store their metadata off-chain and include only a link to it in their storage. Storing the metadata off-chain saves space and makes it easier for off-chain applications to access it. @@ -16,8 +17,6 @@ Storing the metadata off-chain saves space and makes it easier for off-chain app Many contracts store their metadata using the InterPlanetary File System (IPFS) protocol. This protocol stores files in a decentralized network and indexes them by their hash, so users can be assured that the files have not changed. -TODO mention token meta, error message meta? - ## Tutorial contract The completed contract that you create in this part is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_3_complete.py). @@ -34,7 +33,7 @@ Follow these steps to create a Pinata API key: 1. On the Create New API Key page, expand API Endpoint Access and enable the `pinFileToIPFS` permission, as in this picture: - ![Selecting the permissions for the Pinata key](/img/tutorials/pinata-key-permissions.png) + Selecting the permissions for the Pinata key 1. In the **Key Name** field, give the key a name, such as "My Key." @@ -76,6 +75,8 @@ In this section, you add code to use this function to upload contract metadata t This code must come after you create the contract because it uses the `contract.get_offchain_views` function to retrieve the contract's off-chain views. Off-chain views are stored in metadata, not in the contract code or storage. +1. Optional: Edit the metadata fields with information about your contract. + 1. Add permission information to the metadata with this code: ```smartpy @@ -103,7 +104,7 @@ In this section, you add code to use this function to upload contract metadata t ``` 1. Update the `None` values in the `sp.pin_on_ipfs` function with your Pinata API key and secret key. -You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variables. +You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variables and remove the `api_key` and `secret_ley` parameters from the function call. 1. Create the contract metadata and add it to the contract with this code: @@ -115,6 +116,8 @@ You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variab contract.data.metadata = contract_metadata ``` + This code creates a big map that has a single entry that points to the metadata URI. + 1. Run the `python fa2_fungible.py` command to compile and test your contract. Now, SmartPy uploads the metadata as part of the compilation process. From 970cc5c5c85eb5db81c5119e06cedfacfa43c823 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 12:32:04 -0400 Subject: [PATCH 18/37] clarify --- .../smartpy-fa2-fungible/customizing-operations.md | 12 +++++------- .../smartpy-fa2-fungible/deploying-contract.md | 13 +++++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 4b5aa1262..73a47f2e2 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -2,7 +2,7 @@ title: "Part 4: Customizing operations" authors: Tim McMackin last_update: - date: 19 April 2024 + date: 22 April 2024 --- When you use the SmartPy FA2 library, you can't customize the FA2-required entrypoints directly. @@ -34,8 +34,7 @@ Bob, token ID 1 | 2 Bob, token ID 2 | 8 Bob, token ID 3 | 14 -That means that to get the amount of the source token that an account has, you must put together a pair to use as the index. -For example, the code `(sp.sender, source_token_id)` creates a pair where the first item is the account that directly sent this transaction to the contract and the other is a variable that represents the ID of the token type. +That means that to get the amount of the source token that an account has, you must put the address and token ID together as a pair. ## Tutorial contract @@ -55,7 +54,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ) ``` - You could structure this parameter differently, but this is a simple way to do it. + You could structure this parameter differently to allow for multiple conversions in a single call, but this is a simple way to do it. The parameter includes the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. 1. After the `__init__()` function, add an entrypoint with the `@sp.entrypoint` annotation: @@ -92,7 +91,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f Note that this code uses `sp.sender` instead of `sp.source` to identify the account that sent the transaction. The source is the account that initiated the original transaction that led to this entrypoint call, while the sender is the account that made the call that led directly to this entrypoint call. - Using sender here is important to prevent other contracts from accepting a transaction from an account and then sending other transactions impersonating that account. + Using sender here is important to prevent other contracts from accepting a transaction from an account and then sending other transactions that impersonate that account. For more information, see [Avoiding flaws](https://opentezos.com/smart-contracts/avoiding-flaws) on opentezos.com. 1. Add this code to burn the source tokens: @@ -144,8 +143,6 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f 1. At the end of the file, add this test to verify that a user can convert their own tokens: ```smartpy - - scenario.h2("Convert tokens") # Verify that you can convert your own tokens @@ -165,6 +162,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f That's all that's necessary to convert one fungible token into another. if you wanted to extend this feature, you could implement an exchange rate, take a fee for converting tokens, or allow only certain accounts to convert tokens. +You could also test the entrypoint more thoroughly, such as testing that a user can't convert more tokens than they have. If you want to, you can deploy this new contract to the mockup mode with the same commands as in [Part 1: Setting up a simple FA2 token](./basic-fa2-token) and try it out locally. In the next section, you deploy it to a test network. diff --git a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md index 5b9904c04..4c83f2ceb 100644 --- a/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md +++ b/docs/tutorials/smartpy-fa2-fungible/deploying-contract.md @@ -5,9 +5,11 @@ last_update: date: 22 April 2024 --- -So far you have tried the token in a local sandbox. +So far you have used the token in the SmartPy test scenario and in the Octez client local sandbox. To test it on a live network, you can use the Ghostnet test network. +For more information about testnets, see [Testing on sandboxes and testnets](../../developing/testnets). + ## Configuring the Octez client for Ghostnet Follow these steps to set up your installation of the Octez client to work with Ghostnet: @@ -37,10 +39,11 @@ Follow these steps to use your account as the admin account instead: octez-client list known addresses ``` -1. Update the `step_003_cont_0_storage.tz` file so your address is the first address listed, which is the admin account. +1. Update the `step_003_cont_0_storage.tz` file and replace the first address listed with your account. +This is the field that stores the admin account in the contract storage. 1. Deploy the contract to Ghostnet by passing your account alias, the compiled contract, and initial storage value to the `originate contract` command. -For example, if your compiled files are in the `fa2_lib_fungible` folder, the command looks like this: +For example, if your account is named `my_account` and the compiled files are in the `fa2_lib_fungible` folder, the command looks like this: ```bash octez-client originate contract smartpy_fa2_fungible \ @@ -71,6 +74,7 @@ The process for adding a token contract to a wallet depends on the wallet applic Here are steps for the Temple wallet: 1. Copy the address of the contract. +You can use the command `octez-client list known contracts` to print the addresses of contracts that the Octez client knows about. 1. Open the Temple wallet and sign in. @@ -106,4 +110,5 @@ If you want to continue working with the token, here are some ideas: - Implement an exchange rate for the `convert` entrypoint - Implement other custom behaviors for your token while keeping it FA2-compliant - Build a front-end application to make it easier to interact with it -- Add other token types. +- Add other token types and metadata for them +- Try creating a single asset contract or an NFT contract with the SmartPy FA2 library From 63a43ba5c881663ce185f8d0a52f1f3e4af5f414 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Mon, 22 Apr 2024 12:56:00 -0400 Subject: [PATCH 19/37] Intro --- docs/tutorials/smartpy-fa2-fungible.md | 37 +++++++++++++++++++------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md index b37b86aba..037b59f63 100644 --- a/docs/tutorials/smartpy-fa2-fungible.md +++ b/docs/tutorials/smartpy-fa2-fungible.md @@ -2,17 +2,16 @@ title: Create a fungible token with the SmartPy FA2 library authors: Tim McMackin last_update: - date: 18 April 2024 + date: 22 April 2024 --- This tutorial shows you how to use SmartPy's FA2 library to create standards-compliant tokens. In this tutorial you will learn: -- What a fungible token is and how it works +- What a fungible token is and how its contract works - What the FA2 standard is and why token standards are important -- How to write contracts in SmartPy -- How to use the SmartPy FA2 library to create contracts +- How to use the SmartPy FA2 library to create token contracts - How to use a local sandbox to test contracts - How to write custom token behaviors - How to deploy the contract @@ -22,20 +21,38 @@ In this tutorial you will learn: To run this tutorial, you should have a basic understanding of how Tezos works, what blockchain tokens are, and the ability to use the command-line terminal on your computer. +If you haven't worked with smart contracts before, start with the tutorial https://docs.tezos.com/tutorials/smart-contract. + ## What is a fungible token? -TODO +Fungible tokens are collections of identical, interchangeable tokens, just like one US dollar or Euro is the same as any other US dollar or Euro. +Any number of different accounts can each have a quantity of a certain fungible token. + +By contracts, non-fungible tokens are unique and not interchangeable. +Therefore, only one account can own an NFT at one time. ## What is the FA2 standard? -TODO +FA2 is a standard interface for tokens on Tezos. +It supports several different token types, including fungible and non-fungible tokens. + +Adhering to the FA2 standard allows developers to create new types of tokens while ensuring that the tokens work with existing wallets and applications. +The FA2 standard leaves enough freedom for developers to define rules for transferring tokens and for how tokens behave. + +For more information about FA2 tokens, see [FA2 tokens](../architecture/tokens/FA2). + +## What is the SmartPy FA2 library? -## What features does the SmartPy FA2 library have? +The SmartPy FA2 library provides classes and other tools to simplify creating FA2-compliant tokens in the SmartPy language. +You create a contract that inherits from a base class in the library to select a kind of token (fungible, single-asset, or non-fungible). +Then you inherit mixins to customize how the token works. -TODO +For more information about the SmartPy FA2 library, see [FA2 lib](https://smartpy.io/guides/FA2-lib/overview) in the SmartPy documentation. ## Tutorial application -TODO +In this tutorial, you use the SmartPy FA2 library to create a contract that manages multiple fungible tokens. +You add automated tests to the token, deploy it to a local sandbox, customize it further, and deploy it to a test network. +Finally, you work with the token in your own Tezos wallet. -When you're ready, move to the next section to start setting up your token. \ No newline at end of file +When you're ready, move to the next section to start setting up your token. From c67ee59f9ada9263e83feba8d22c6635ad51412c Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 09:11:35 -0400 Subject: [PATCH 20/37] Hide todo in a comment --- docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index 02c4f21d7..e43b2d0f6 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -421,7 +421,7 @@ In particular, check your indentation, because indentation is significant in Pyt You can compare your contract with the completed contract here: [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_1_complete.py). -TODO more troubleshooting + ## (Optional) Deploy the contract to the Octez client mockup mode From 477d6c70b93ce4697a92fdc976aaccb556bb1a23 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 09:21:10 -0400 Subject: [PATCH 21/37] Simplify minting --- .../smartpy-fa2-fungible/customizing-operations.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 73a47f2e2..2e781769f 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -126,12 +126,8 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ```smartpy # Mint the target tokens - is_target = self.data.ledger.get_opt(from_target) - with sp.match(is_target): - with sp.case.Some as target_amount: - self.data.ledger[from_target] = amount + target_amount - with None: - self.data.ledger[from_target] = amount + target_amount = self.data.ledger.get(from_target, default=0) + self.data.ledger[from_target] = amount + target_amount self.data.supply[target_token_id] += amount ``` From 2b10fff8edf615bde0da371f5273e00c7b35734e Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 09:32:46 -0400 Subject: [PATCH 22/37] Clarify customizing entrypoints --- .../smartpy-fa2-fungible/customizing-operations.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 2e781769f..8c65cd29c 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -2,13 +2,15 @@ title: "Part 4: Customizing operations" authors: Tim McMackin last_update: - date: 22 April 2024 + date: 7 May 2024 --- -When you use the SmartPy FA2 library, you can't customize the FA2-required entrypoints directly. -These entrypoints should run according to the standard. +As shown in previous parts, the SmartPy FA2 library provides the entrypoints that the standard requires. +You can override these entrypoints, but you must be sure to follow the standard. +You can also customize their behavior by setting security policies. + -However, you can customize the contract by adding your own entrypoints. +You can also customize the contract by adding your own entrypoints. In this part, you add an entrypoint that allows users to exchange one token for another. To convert one token into another, the entrypoint follows these general steps: From 1b3472218db99934c518aa1e6f4bf0fee2bec129 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 09:33:12 -0400 Subject: [PATCH 23/37] typo --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index 49c7e02ec..7cc639e74 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -104,7 +104,7 @@ In this section, you add code to use this function to upload contract metadata t ``` 1. Update the `None` values in the `sp.pin_on_ipfs` function with your Pinata API key and secret key. -You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variables and remove the `api_key` and `secret_ley` parameters from the function call. +You can also put them in the `PINATA_KEY` and `PINATA_SECRET` environment variables and remove the `api_key` and `secret_key` parameters from the function call. 1. Create the contract metadata and add it to the contract with this code: From b72c9808f3681a515427242e70316e1ae03a2b88 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 09:36:13 -0400 Subject: [PATCH 24/37] Clarify upload and pin --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index 7cc639e74..c1808a66d 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -2,7 +2,7 @@ title: "Part 3: Adding metadata" authors: Tim McMackin last_update: - date: 22 April 2024 + date: 7 May 2024 --- In this part, you configure the metadata for the contract. @@ -50,8 +50,8 @@ You need these values in the next section. ## Uploading metadata -The SmartPy `sp.pin_on_ipfs` function uploads (or "pins") metadata to IPFS via your Pinata account. -In this section, you add code to use this function to upload contract metadata to IPFS when the test scenario runs. +The SmartPy `sp.pin_on_ipfs` function uploads metadata to IPFS via your Pinata account and "pins" it so it stays available until you remove it. +In this section, you add code to use this function to upload and pin contract metadata to IPFS when the test scenario runs. 1. After the code that instantiates the contract in the test scenario, use the `sp.create_tzip16_metadata` function to create a metadata object that is compatible with the [TZIP-16](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-16/tzip-16.md) standard for contract metadata: From dccb375fb69ea336a2dcc98d7e7a0de34cbea3f4 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 10:39:58 -0400 Subject: [PATCH 25/37] Handle conversions in a batch --- .../customizing-operations.md | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 8c65cd29c..0313b1229 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -46,7 +46,7 @@ The completed contract that you create in this part is at [part_4_complete.py](h Follow these steps to create the `convert` entrypoint that exchanges one token for another: -1. At the beginning of the module, after the `def my_module():` statement but before the `class` statement, add a type that represents the parameter for the entrypoint: +1. At the beginning of the module, after the `def my_module():` statement but before the `class` statement, add a type that represents the information for a token transfer: ```smartpy conversion_type: type = sp.record( @@ -56,21 +56,35 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ) ``` - You could structure this parameter differently to allow for multiple conversions in a single call, but this is a simple way to do it. - The parameter includes the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. + The type includes the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. -1. After the `__init__()` function, add an entrypoint with the `@sp.entrypoint` annotation: +1. After this type, create a type that is a list of conversions: + + ```smartpy + conversion_batch: type = sp.list[conversion_type] + ``` + + This type is the parameter for the `convert` entrypoint. + The FA2 standard says that custom entrypoints should accept batches for parameters to allow users to do multiple things in a single transaction. + +1. After the `__init__()` function, add an entrypoint with the `@sp.entrypoint` annotation and accept a parameter of the `conversion_match` type: ```smartpy # Convert one token into another @sp.entrypoint - def convert(self, conversion): + def convert(self, batch): + sp.cast(batch, conversion_batch) ``` -1. Accept a parameter of the type you created in the first step and destructure it into individual variables: +1. Loop over the conversions in the batch: + + ```smartpy + for conversion in batch: + ``` + +1. Within the loop, destructure the conversion into individual variables: ```smartpy - sp.cast(conversion, conversion_type) record(source_token_id, target_token_id, amount).match = conversion ``` @@ -144,8 +158,11 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f scenario.h2("Convert tokens") # Verify that you can convert your own tokens - contract.convert( + conversions = [ sp.record(source_token_id = 0, target_token_id = 1, amount = 2), + ] + contract.convert( + conversions, _sender=alice ) scenario.verify( From eeed841f04d836f2005a6a842af9d1197876eeb6 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 10:56:40 -0400 Subject: [PATCH 26/37] Clarify pinning --- .../tutorials/smartpy-fa2-fungible/adding-metadata.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index c1808a66d..9ae99ddb2 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -14,8 +14,15 @@ Contracts can also store other information in their metadata, including the code Generally, contracts store their metadata off-chain and include only a link to it in their storage. Storing the metadata off-chain saves space and makes it easier for off-chain applications to access it. -Many contracts store their metadata using the InterPlanetary File System (IPFS) protocol. -This protocol stores files in a decentralized network and indexes them by their hash, so users can be assured that the files have not changed. +## Storing metadata with IPFS + +Many contracts store their metadata with the InterPlanetary File System (IPFS) protocol. +This protocol stores files in a decentralized peer-to-peer network and indexes them by their hash, so users can be assured that the files have not changed. +As long as one IPFS user has a copy of the data, they can re-upload it to IPFS with the same hash so it is seamlessly available again. + +Therefore, uploading data to IPFS doesn't mean that it will be available forever; at least one user must keep a copy of it. +Instructing an IPFS node to keep a copy of a file is called _pinning_ the file. +SmartPy provides a function that uploads data to IPFS via the Pinata service and instructs Pinata to pin it. ## Tutorial contract From 7249e46412e2052d10fca6652e280154ba37f2c3 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 11:18:19 -0400 Subject: [PATCH 27/37] link to main branch of contracts --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 4 ++-- docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md | 4 ++-- docs/tutorials/smartpy-fa2-fungible/customizing-operations.md | 2 +- docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index 9ae99ddb2..7b323f7cc 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -26,7 +26,7 @@ SmartPy provides a function that uploads data to IPFS via the Pinata service and ## Tutorial contract -The completed contract that you create in this part is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_3_complete.py). +The completed contract that you create in this part is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_3_complete.py). ## Getting a Pinata API key @@ -136,6 +136,6 @@ By default, the file is named "No name set" and looks like this in your Pinata f You can click this file to see it and verify that the name and description at the top of the file match the name and description of your contract. The rest of the file is the code of off-chain views that the FA2 library adds automatically. -The completed contract is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_3_complete.py). +The completed contract is at [part_3_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_3_complete.py). Now when you deploy the completed contract, wallets and block explorers can show information about it. diff --git a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md index e43b2d0f6..75b0f8044 100644 --- a/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md +++ b/docs/tutorials/smartpy-fa2-fungible/basic-fa2-token.md @@ -18,7 +18,7 @@ To run this part of the tutorial, makes sure that you have the following tools i ## Tutorial contract -The completed contract that you create in this part is at [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_1_complete.py). +The completed contract that you create in this part is at [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_1_complete.py). ## Using the library to create a contract @@ -419,7 +419,7 @@ In the next section, you deploy the contract to a local Tezos sandbox. If the `python` command shows any errors, make sure that your contract matches the example. In particular, check your indentation, because indentation is significant in Python and SmartPy. -You can compare your contract with the completed contract here: [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_1_complete.py). +You can compare your contract with the completed contract here: [part_1_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_1_complete.py). diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 0313b1229..ef0252f31 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -40,7 +40,7 @@ That means that to get the amount of the source token that an account has, you m ## Tutorial contract -The completed contract that you create in this part is at [part_4_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_4_complete.py). +The completed contract that you create in this part is at [part_4_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_4_complete.py). ## Exchanging one token for another diff --git a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md index c4859f199..993acaffb 100644 --- a/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md +++ b/docs/tutorials/smartpy-fa2-fungible/minting-and-burning.md @@ -12,7 +12,7 @@ Mixins are modular classes that add specific pieces of functionality. ## Tutorial contract -The completed contract that you create in this part is at [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_2_complete.py). +The completed contract that you create in this part is at [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_2_complete.py). ## Adding the admin, mint, and burn entrypoints @@ -151,7 +151,7 @@ Only the admin account can mint tokens, but anyone can burn their own tokens. ``` 1. Run the `python fa2_fungible.py` command to compile and test your contract. -If you see any errors, make sure that your code matches the code above or compare with the completed contract here: [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/smartpy-fa2-tutorial/smartpy_fa2_fungible/part_2_complete.py). +If you see any errors, make sure that your code matches the code above or compare with the completed contract here: [part_2_complete.py](https://github.com/trilitech/tutorial-applications/blob/main/smartpy_fa2_fungible/part_2_complete.py). Note that there are many more output files in the `fa2_lib_fungible` folder. The SmartPy compiler creates output files for each call to an entrypoint in the test scenario. From cc0a60a9475609aef06e4f9235b2a2ddfcda9a04 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Tue, 7 May 2024 11:30:14 -0400 Subject: [PATCH 28/37] link to completed contracts --- docs/tutorials/smartpy-fa2-fungible.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md index 037b59f63..8b77128ed 100644 --- a/docs/tutorials/smartpy-fa2-fungible.md +++ b/docs/tutorials/smartpy-fa2-fungible.md @@ -55,4 +55,6 @@ In this tutorial, you use the SmartPy FA2 library to create a contract that mana You add automated tests to the token, deploy it to a local sandbox, customize it further, and deploy it to a test network. Finally, you work with the token in your own Tezos wallet. +The completed smart contracts are available here: https://github.com/trilitech/tutorial-applications/tree/main/smartpy_fa2_fungible + When you're ready, move to the next section to start setting up your token. From c0f322e67cb1bb1e3b6aae459a19e07becaa8454 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 12:13:22 -0400 Subject: [PATCH 29/37] Typo: By contrast... --- docs/tutorials/smartpy-fa2-fungible.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md index 8b77128ed..0a344f72a 100644 --- a/docs/tutorials/smartpy-fa2-fungible.md +++ b/docs/tutorials/smartpy-fa2-fungible.md @@ -28,7 +28,7 @@ If you haven't worked with smart contracts before, start with the tutorial https Fungible tokens are collections of identical, interchangeable tokens, just like one US dollar or Euro is the same as any other US dollar or Euro. Any number of different accounts can each have a quantity of a certain fungible token. -By contracts, non-fungible tokens are unique and not interchangeable. +By contrast, non-fungible tokens are unique and not interchangeable. Therefore, only one account can own an NFT at one time. ## What is the FA2 standard? From 40724e5c6c436aa57c3d698d3f4d30692d410de5 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 12:39:31 -0400 Subject: [PATCH 30/37] Warning about NFTs and fungibles --- docs/tutorials/smartpy-fa2-fungible.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible.md b/docs/tutorials/smartpy-fa2-fungible.md index 0a344f72a..a16643ab9 100644 --- a/docs/tutorials/smartpy-fa2-fungible.md +++ b/docs/tutorials/smartpy-fa2-fungible.md @@ -2,7 +2,7 @@ title: Create a fungible token with the SmartPy FA2 library authors: Tim McMackin last_update: - date: 22 April 2024 + date: 10 May 2024 --- This tutorial shows you how to use SmartPy's FA2 library to create standards-compliant tokens. @@ -29,7 +29,12 @@ Fungible tokens are collections of identical, interchangeable tokens, just like Any number of different accounts can each have a quantity of a certain fungible token. By contrast, non-fungible tokens are unique and not interchangeable. -Therefore, only one account can own an NFT at one time. +Therefore, only one account can own a specific NFT at one time. + +The term "NFT" is often misused when assets are represented on blockchains, and is often confused with a fungible token. +Make sure that you understand the difference. + +For more information about types of tokens, see [Tokens](../architecture/tokens). ## What is the FA2 standard? From db51897881275ce650f9c412ccafd0c705177630 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 12:51:14 -0400 Subject: [PATCH 31/37] Distinguish contract and token metadata --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index 7b323f7cc..d953b4edd 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -2,16 +2,18 @@ title: "Part 3: Adding metadata" authors: Tim McMackin last_update: - date: 7 May 2024 + date: 10 May 2024 --- In this part, you configure the metadata for the contract. Contract metadata provides details about the contract itself, including its name, description, and what standards it follows. This information lets off-chain applications like wallets and block explorers show information about the contract. -Contracts can also store other information in their metadata, including the code for off-chain views, metadata for tokens, and information about error messages. +Contracts can also store other information in metadata, including the code for off-chain views and information about error messages. -Generally, contracts store their metadata off-chain and include only a link to it in their storage. +Contracts that manage tokens also store metadata about those tokens, including descriptions of the tokens and links to preview media. + +Generally, contracts store their metadata and token metadata off-chain and include only a link to it in their storage. Storing the metadata off-chain saves space and makes it easier for off-chain applications to access it. ## Storing metadata with IPFS From c7df0943a9aee5cfda29a3a519e6288a8a76731f Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 12:56:21 -0400 Subject: [PATCH 32/37] Clarify verifying files by hash --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index d953b4edd..fa47c9a6e 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -18,8 +18,9 @@ Storing the metadata off-chain saves space and makes it easier for off-chain app ## Storing metadata with IPFS -Many contracts store their metadata with the InterPlanetary File System (IPFS) protocol. -This protocol stores files in a decentralized peer-to-peer network and indexes them by their hash, so users can be assured that the files have not changed. +Many contracts store metadata with the InterPlanetary File System (IPFS) protocol. +This protocol stores files in a decentralized peer-to-peer network and indexes them by their hash. +That way, users can access media by its hash, and the hash allows them to verify that the files have not changed. As long as one IPFS user has a copy of the data, they can re-upload it to IPFS with the same hash so it is seamlessly available again. Therefore, uploading data to IPFS doesn't mean that it will be available forever; at least one user must keep a copy of it. From 96631985a6eb391ab0ff83f3433c0f019dbf8f37 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 12:57:48 -0400 Subject: [PATCH 33/37] Pin to ensure that it remains available --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index fa47c9a6e..f9665fcee 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -60,7 +60,7 @@ You need these values in the next section. ## Uploading metadata -The SmartPy `sp.pin_on_ipfs` function uploads metadata to IPFS via your Pinata account and "pins" it so it stays available until you remove it. +The SmartPy `sp.pin_on_ipfs` function uploads metadata to IPFS via your Pinata account and "pins" it to ensure that it remains available until you remove it. In this section, you add code to use this function to upload and pin contract metadata to IPFS when the test scenario runs. 1. After the code that instantiates the contract in the test scenario, use the `sp.create_tzip16_metadata` function to create a metadata object that is compatible with the [TZIP-16](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-16/tzip-16.md) standard for contract metadata: From 42f2e3a9e0055288c90122fe9f73f418f38c66ce Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 13:01:04 -0400 Subject: [PATCH 34/37] Save your own copy of the data --- docs/tutorials/smartpy-fa2-fungible/adding-metadata.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md index f9665fcee..be51ada88 100644 --- a/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md +++ b/docs/tutorials/smartpy-fa2-fungible/adding-metadata.md @@ -62,6 +62,7 @@ You need these values in the next section. The SmartPy `sp.pin_on_ipfs` function uploads metadata to IPFS via your Pinata account and "pins" it to ensure that it remains available until you remove it. In this section, you add code to use this function to upload and pin contract metadata to IPFS when the test scenario runs. +It is still advisable to save a local copy of your metadata, just as you would with any upload service. 1. After the code that instantiates the contract in the test scenario, use the `sp.create_tzip16_metadata` function to create a metadata object that is compatible with the [TZIP-16](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-16/tzip-16.md) standard for contract metadata: From 7ea5289e59810e4420df10f2f63d1af462eeb3d4 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 13:17:52 -0400 Subject: [PATCH 35/37] Capitalization --- docs/tutorials/smartpy-fa2-fungible/customizing-operations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index ef0252f31..39e14cd9b 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -176,7 +176,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ``` That's all that's necessary to convert one fungible token into another. -if you wanted to extend this feature, you could implement an exchange rate, take a fee for converting tokens, or allow only certain accounts to convert tokens. +If you wanted to extend this feature, you could implement an exchange rate, take a fee for converting tokens, or allow only certain accounts to convert tokens. You could also test the entrypoint more thoroughly, such as testing that a user can't convert more tokens than they have. If you want to, you can deploy this new contract to the mockup mode with the same commands as in [Part 1: Setting up a simple FA2 token](./basic-fa2-token) and try it out locally. From aeeb9700f7d32720b5c08e45ec219628809d7e24 Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 13:45:41 -0400 Subject: [PATCH 36/37] By convention, two spaces before inline comment --- docs/tutorials/smartpy-fa2-fungible/customizing-operations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index 39e14cd9b..cbe707ae8 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -51,8 +51,8 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ```smartpy conversion_type: type = sp.record( source_token_id = sp.nat, # The ID of the source token - target_token_id = sp.nat, # The ID of the target token - amount = sp.nat, # The number of source tokens to convert + target_token_id = sp.nat, # The ID of the target token + amount = sp.nat, # The number of source tokens to convert ) ``` From 9f3499cc8a7316996576540cffd973944d1d11ce Mon Sep 17 00:00:00 2001 From: Tim McMackin Date: Fri, 10 May 2024 15:45:13 -0400 Subject: [PATCH 37/37] Add from parameter in the style of other entrypoints and add tests for operators --- .../customizing-operations.md | 71 ++++++++++++++++--- 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md index cbe707ae8..c36c985c3 100644 --- a/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md +++ b/docs/tutorials/smartpy-fa2-fungible/customizing-operations.md @@ -2,7 +2,7 @@ title: "Part 4: Customizing operations" authors: Tim McMackin last_update: - date: 7 May 2024 + date: 10 May 2024 --- As shown in previous parts, the SmartPy FA2 library provides the entrypoints that the standard requires. @@ -15,6 +15,7 @@ In this part, you add an entrypoint that allows users to exchange one token for To convert one token into another, the entrypoint follows these general steps: 1. Verify that the source and target tokens are defined. +1. Verify that the requester has permission to access the source token. 1. Burn the source tokens by decreasing the amount in the ledger for the account or fail if the account doesn't have enough. 1. Mint the target tokens by increasing the amount in the ledger for the account. @@ -50,13 +51,14 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ```smartpy conversion_type: type = sp.record( + from_ = sp.address, # Account to convert tokens from source_token_id = sp.nat, # The ID of the source token target_token_id = sp.nat, # The ID of the target token amount = sp.nat, # The number of source tokens to convert ) ``` - The type includes the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. + The type includes the account, the ID of the source token, the ID of the token to convert it into, and the amount of tokens to convert. 1. After this type, create a type that is a list of conversions: @@ -85,7 +87,12 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f 1. Within the loop, destructure the conversion into individual variables: ```smartpy - record(source_token_id, target_token_id, amount).match = conversion + record( + from_, + source_token_id, + target_token_id, + amount + ).match = conversion ``` 1. Add this code to verify that the contract's security policy allows transfers (which it does by default) and that the source and target token exist: @@ -98,18 +105,32 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f assert self.is_defined_(target_token_id), "FA2_TOKEN_UNDEFINED" ``` -1. Create a pair that represents the key for the source token type: +1. Add this code to verify that the account that sent the request is either the owner or an operator of the tokens: ```smartpy - # Get a pair to represent the key for the ledger for the source tokens - from_source = (sp.sender, source_token_id) + # Verify that the sender is either the owner or the operator of the source tokens + assert (sp.sender == from_) or self.data.operators.contains( + sp.record( + owner=from_, operator=sp.sender, token_id=source_token_id + ) + ), "FA2_NOT_OPERATOR" ``` + In FA2 contracts, an operator is an account that is authorized to transfer tokens that are owned by another account. + For more information, see [Operators](../../architecture/tokens/FA2). + Note that this code uses `sp.sender` instead of `sp.source` to identify the account that sent the transaction. The source is the account that initiated the original transaction that led to this entrypoint call, while the sender is the account that made the call that led directly to this entrypoint call. Using sender here is important to prevent other contracts from accepting a transaction from an account and then sending other transactions that impersonate that account. For more information, see [Avoiding flaws](https://opentezos.com/smart-contracts/avoiding-flaws) on opentezos.com. +1. Create a pair that represents the key for the source token type: + + ```smartpy + # Get a pair to represent the key for the ledger for the source tokens + from_source = (from_, source_token_id) + ``` + 1. Add this code to burn the source tokens: ```smartpy @@ -135,7 +156,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ```smartpy # Get a pair to represent the key for the ledger for the target tokens - from_target = (sp.sender, target_token_id) + from_target = (from_, target_token_id) ``` 1. Add this code to mint the target tokens: @@ -152,7 +173,7 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f If not, it creates a new record in the ledger. Finally, it increases the supply of that token. -1. At the end of the file, add this test to verify that a user can convert their own tokens: +1. At the end of the file, add this test to verify that a user can convert their own tokens but not other accounts' tokens: ```smartpy scenario.h2("Convert tokens") @@ -173,6 +194,40 @@ Follow these steps to create the `convert` entrypoint that exchanges one token f ) scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 12) scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 16) + + # Verify that you can't convert someone else's tokens + contract.convert( + conversions, + _sender=bob, + _valid=False, + _exception="FA2_NOT_OPERATOR" + ) + ``` + +1. Add this test to verify that an account can set another account as an operator and that the operator can transfer their tokens: + + ```smartpy + # Make Bob an operator of Alice's token 0 + operator_update = sp.record(owner=alice.address, operator=bob.address, token_id=0) + contract.update_operators( + [ + sp.variant.add_operator(operator_update) + ], + _sender=alice + ) + # Have Bob convert Alice's tokens + contract.convert( + conversions, + _sender=bob + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=0)) == 6 + ) + scenario.verify( + _get_balance(contract, sp.record(owner=alice.address, token_id=1)) == 7 + ) + scenario.verify(_total_supply(contract, sp.record(token_id=0)) == 10) + scenario.verify(_total_supply(contract, sp.record(token_id=1)) == 18) ``` That's all that's necessary to convert one fungible token into another.