Source Code
Latest 25 from a total of 13,615 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Purchase | 35102719 | 9 days ago | IN | 0.00200001 ETH | 0.00001795 | ||||
| Purchase | 35102710 | 9 days ago | IN | 0.00200001 ETH | 0.00001171 | ||||
| Purchase | 35102688 | 9 days ago | IN | 0.00200001 ETH | 0.00001353 | ||||
| Purchase | 35102154 | 9 days ago | IN | 0.00100001 ETH | 0.00001221 | ||||
| Purchase | 35102141 | 9 days ago | IN | 0.00100001 ETH | 0.00001353 | ||||
| Purchase | 35101843 | 9 days ago | IN | 0.00300001 ETH | 0.00001604 | ||||
| Purchase | 35091442 | 9 days ago | IN | 0.00200001 ETH | 0.00001201 | ||||
| Purchase | 35090453 | 9 days ago | IN | 0.00200001 ETH | 0.00001888 | ||||
| Purchase | 35089658 | 9 days ago | IN | 0.00200001 ETH | 0.00001584 | ||||
| Purchase | 35088660 | 9 days ago | IN | 0.00200001 ETH | 0.00001202 | ||||
| Purchase | 35087707 | 9 days ago | IN | 0.00200001 ETH | 0.00001585 | ||||
| Purchase | 35086946 | 9 days ago | IN | 0.00100001 ETH | 0.00001172 | ||||
| Purchase | 35086342 | 9 days ago | IN | 0.00100001 ETH | 0.00001344 | ||||
| Purchase | 35086019 | 9 days ago | IN | 0.00200001 ETH | 0.00001334 | ||||
| Purchase | 35085570 | 9 days ago | IN | 0.00100001 ETH | 0.00001693 | ||||
| Purchase | 35084948 | 9 days ago | IN | 0.00200001 ETH | 0.00001202 | ||||
| Purchase | 35084612 | 9 days ago | IN | 0.00200001 ETH | 0.00001202 | ||||
| Purchase | 35084539 | 9 days ago | IN | 0.00100001 ETH | 0.0000144 | ||||
| Purchase | 35083662 | 9 days ago | IN | 0.00200001 ETH | 0.00001769 | ||||
| Purchase | 35083500 | 9 days ago | IN | 0.00300001 ETH | 0.00001334 | ||||
| Purchase | 35083479 | 9 days ago | IN | 0.00300001 ETH | 0.00001603 | ||||
| Purchase | 35075204 | 9 days ago | IN | 0.00100001 ETH | 0.00001727 | ||||
| Purchase | 35072262 | 9 days ago | IN | 0.00100001 ETH | 0.00001692 | ||||
| Purchase | 35041595 | 9 days ago | IN | 0.00100001 ETH | 0.00001172 | ||||
| Purchase | 35040991 | 9 days ago | IN | 0.00100001 ETH | 0.00001728 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 35102719 | 9 days ago | 0.00000001 ETH | ||||
| 35102719 | 9 days ago | 0.00200001 ETH | ||||
| 35102710 | 9 days ago | 0.00000001 ETH | ||||
| 35102710 | 9 days ago | 0.00200001 ETH | ||||
| 35102688 | 9 days ago | 0.00000001 ETH | ||||
| 35102688 | 9 days ago | 0.00200001 ETH | ||||
| 35102154 | 9 days ago | 0.00000001 ETH | ||||
| 35102154 | 9 days ago | 0.00100001 ETH | ||||
| 35102141 | 9 days ago | 0.00000001 ETH | ||||
| 35102141 | 9 days ago | 0.00100001 ETH | ||||
| 35101843 | 9 days ago | 0.00000001 ETH | ||||
| 35101843 | 9 days ago | 0.00300001 ETH | ||||
| 35091442 | 9 days ago | 0.00000001 ETH | ||||
| 35091442 | 9 days ago | 0.00200001 ETH | ||||
| 35090453 | 9 days ago | 0.00000001 ETH | ||||
| 35090453 | 9 days ago | 0.00200001 ETH | ||||
| 35089658 | 9 days ago | 0.00000001 ETH | ||||
| 35089658 | 9 days ago | 0.00200001 ETH | ||||
| 35088660 | 9 days ago | 0.00000001 ETH | ||||
| 35088660 | 9 days ago | 0.00200001 ETH | ||||
| 35087707 | 9 days ago | 0.00000001 ETH | ||||
| 35087707 | 9 days ago | 0.00200001 ETH | ||||
| 35086946 | 9 days ago | 0.00000001 ETH | ||||
| 35086946 | 9 days ago | 0.00100001 ETH | ||||
| 35086342 | 9 days ago | 0.00000001 ETH |
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
VendorSystem
Compiler Version
v0.8.28+commit.7893614a
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {DataTable} from "../db/DataTable.sol";
import {IVendorSystem, ID as ID} from "./IVendorSystem.sol";
import {IGameItemMinter, ID as GAME_ITEM_MINTER_CONTRACT_ID} from "../IGameItemMinter.sol";
import {IGigaJuiceSystem, ID as GIGA_JUICE_SYSTEM_CONTRACT_ID} from "../gigaJuiceSystem/IGigaJuiceSystem.sol";
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import {MANAGER_ROLE, GAME_LOGIC_CONTRACT_ROLE, DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
import {ID_CID, ETH_MINT_PRICE_CID, BALANCE_CID,MINT_COUNT_CID, IMPORT_AMOUNT_CID, OWNER_CID, IS_CANCELLED_CID, PLAYER_CID, UNLOCKED_CID, GAME_ITEM_ID_CID, EXPORT_AMOUNT_CID, ADDRESS_CID, UINT256_CID, REFERRER_CID, MAX_SUPPLY_CID, TIMESTAMP_CID, TIME_BETWEEN_CID} from "../constants/ColumnConstants.sol";
contract VendorSystem is IVendorSystem, DataTable {
constructor(address gameRegistryAddress) DataTable(gameRegistryAddress, ID) {}
function initialize() external override onlyRole(DEPLOYER_ROLE) {
initializeTable("VendorSystem", ID);
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IVendorSystem).interfaceId
|| interfaceId == type(IERC165).interfaceId;
}
////////////////////
// Public Writes //
//////////////////
function purchase(uint256 listingId, uint256 amount) external payable whenNotPaused nonReentrant returns (uint256) {
uint256 totalPrice = getListingPrice(listingId) * amount;
require(msg.value >= totalPrice, "Insufficient payment");
_verifyCanPurchase(listingId, amount, msg.sender);
_transferFromListing(listingId, amount, msg.sender);
_payRoyalty(listingId, totalPrice);
// Refund excess payment
uint256 excess = msg.value - totalPrice;
if (excess > 0) {
(bool success, ) = payable(msg.sender).call{value: excess}("");
require(success, "Refund failed");
}
return amount;
}
////////////////////
// Public Reads ///
//////////////////
function isListingActive(uint256 listingId) public view returns (bool) {
uint256 startTime = getDocUint256Value(listingId, TIMESTAMP_CID);
uint256 endTime = startTime + getDocUint256Value(listingId, TIME_BETWEEN_CID);
return block.timestamp >= startTime && block.timestamp <= endTime && !getDocBoolValue(listingId, IS_CANCELLED_CID);
}
function supplyRemaining(uint256 listingId) public view returns (uint256) {
uint256 maxSupply = getDocUint256Value(listingId, MAX_SUPPLY_CID);
uint256 mintCount = getDocUint256Value(listingId, MINT_COUNT_CID);
return maxSupply - mintCount;
}
function getItemsInListing(uint256 listingId) public view returns (uint256[] memory, uint256[] memory) {
return (getDocUint256ArrayValue(listingId, GAME_ITEM_ID_CID), getDocUint256ArrayValue(listingId, EXPORT_AMOUNT_CID));
}
function doesListingRequireJuice(uint256 listingId) public view returns (bool) {
return !getDocBoolValue(listingId, UNLOCKED_CID);
}
function getPlayerPurchasesRemaining(uint256 listingId, address player) public view returns (uint256) {
uint256 limitPerPlayer = getDocUint256Value(listingId, BALANCE_CID);
uint256 playerMintCount = getDocUint256Value(_getPlayerListingDocId(listingId, player), MINT_COUNT_CID);
return limitPerPlayer - playerMintCount;
}
function getListingPrice(uint256 listingId) public view returns (uint256) {
return getDocUint256Value(listingId, ETH_MINT_PRICE_CID);
}
function getListingRoyalty(uint256 listingId) public view returns (uint256, address) {
return (getDocUint256Value(listingId, IMPORT_AMOUNT_CID), getDocAddressValue(listingId, OWNER_CID));
}
//////////////
// Manager //
////////////
function withdraw() external onlyRole(MANAGER_ROLE) {
(bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
require(success, "Transfer failed");
}
function setListingCreator(uint256 listingId, address creator, uint256 importAmount) external onlyRole(MANAGER_ROLE) {
_setDocAddressValue(listingId, OWNER_CID, creator);
require(importAmount <= 10000, "Import amount must be less than or equal to 10000");
_setDocUint256Value(listingId, IMPORT_AMOUNT_CID, importAmount);
}
function updateListingPrice(uint256 listingId, uint256 newPrice) external onlyRole(MANAGER_ROLE) {
require(newPrice > 0, "Price must be greater than 0");
_setDocUint256Value(listingId, ETH_MINT_PRICE_CID, newPrice);
}
function updateListingSupply(uint256 listingId, uint256 newSupply) external onlyRole(MANAGER_ROLE) {
require(newSupply > 0, "Supply must be greater than 0");
_setDocUint256Value(listingId, MAX_SUPPLY_CID, newSupply);
}
function updateListingTime(uint256 listingId, uint256 newStartTime, uint256 newEndTime) external onlyRole(MANAGER_ROLE) {
require(newStartTime < newEndTime, "Start time must be before end time");
_setDocUint256Value(listingId, TIMESTAMP_CID, newStartTime);
_setDocUint256Value(listingId, TIME_BETWEEN_CID, newEndTime - newStartTime);
}
function createListing(uint256 listingId, uint256 pricePerItem, uint256 totalSupply, uint256 startTime, uint256 endTime, bool requiresJuice, uint256 limitPerPlayer, uint256[] memory itemIds, uint256[] memory amounts) external onlyRole(MANAGER_ROLE) {
require(startTime < endTime, "Start time must be before end time");
require(itemIds.length == amounts.length, "Item IDs and amounts must have the same length");
require(itemIds.length > 0, "Item IDs must be greater than 0");
require(totalSupply > 0, "Total supply must be greater than 0");
require(pricePerItem > 0, "Price per item must be greater than 0");
require(listingId > 0, "Listing ID must be greater than 0");
require(startTime > 0, "Start time must be greater than 0");
_setDocUint256Value(listingId, ETH_MINT_PRICE_CID, pricePerItem);
_setDocUint256Value(listingId, MAX_SUPPLY_CID, totalSupply);
_setDocUint256Value(listingId, TIMESTAMP_CID, startTime);
uint256 timeBetween = endTime - startTime;
_setDocUint256Value(listingId, TIME_BETWEEN_CID, timeBetween);
_setDocUint256ArrayValue(listingId, GAME_ITEM_ID_CID, itemIds);
_setDocUint256ArrayValue(listingId, EXPORT_AMOUNT_CID, amounts);
_setDocUint256Value(listingId, BALANCE_CID, limitPerPlayer);
_setDocBoolValue(listingId, UNLOCKED_CID, !requiresJuice);
}
function cancelListing(uint256 listingId) external onlyRole(MANAGER_ROLE) {
_setDocBoolValue(listingId, IS_CANCELLED_CID, true);
}
/////////////////////
// Game Contracts //
///////////////////
////////////////////////
// Internal Helpers ///
//////////////////////
function _verifyCanPurchase(uint256 listingId, uint256 amount, address player) internal view {
require(isListingActive(listingId), "Listing not active");
require(supplyRemaining(listingId) >= amount, "Insufficient supply");
require(getPlayerPurchasesRemaining(listingId, player) >= amount, "Player limit reached");
if (doesListingRequireJuice(listingId)) {
IGigaJuiceSystem gigaJuiceSystem = IGigaJuiceSystem(_gameRegistry.getSystem(GIGA_JUICE_SYSTEM_CONTRACT_ID));
require(gigaJuiceSystem.isPlayerJuiced(player), "Player not juiced");
}
}
function _payRoyalty(uint256 listingId, uint256 amount) internal {
uint256 importAmount = getDocUint256Value(listingId, IMPORT_AMOUNT_CID);
if (importAmount > 0) {
address creator = getDocAddressValue(listingId, OWNER_CID);
if (creator != address(0)) {
uint256 royaltyAmount = (amount * importAmount) / 10000;
if (royaltyAmount > 0) {
(bool success, ) = payable(creator).call{value: royaltyAmount}("");
require(success, "Royalty transfer failed");
}
}
}
}
function _transferFromListing(uint256 listingId, uint256 amount, address player) internal {
uint256[] memory itemIds = getDocUint256ArrayValue(listingId, GAME_ITEM_ID_CID);
uint256[] memory amounts = getDocUint256ArrayValue(listingId, EXPORT_AMOUNT_CID);
IGameItemMinter gameItemMinter = IGameItemMinter(_gameRegistry.getSystem(GAME_ITEM_MINTER_CONTRACT_ID));
for (uint256 i = 0; i < itemIds.length; i++) {
gameItemMinter.mintOffchain(player, itemIds[i], amounts[i] * amount);
}
_incrementAmount(listingId, MINT_COUNT_CID, amount);
_incrementAmount(_getPlayerListingDocId(listingId, player), MINT_COUNT_CID, amount);
_setDocAddressValue(_getPlayerListingDocId(listingId, player), PLAYER_CID, player);
}
function _getPlayerListingDocId(uint256 listingId, address player) internal pure returns (uint256) {
return uint256(keccak256(abi.encodePacked(listingId, player)));
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import {DataStore, ID as DATA_STORE_ID} from "./DataStore.sol";
import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
import {NAME_CID, ADDRESS_CID, ID_CID, NEXT_DOCID_CID, OWNER_CID} from "../constants/ColumnConstants.sol";
import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol";
contract DataTable is GameRegistryConsumer {
error AlreadyInitialized();
bool private _initialized;
constructor(address gameRegistryAddress, uint256 ID) GameRegistryConsumer(gameRegistryAddress, ID) {}
function owner() public view virtual returns (address) {
return getTableAddressValue(OWNER_CID);
}
function name() public view virtual returns (string memory) {
return getTableStringValue(NAME_CID);
}
function initializeTable(string memory nameToSet, uint256 id) internal {
if (_initialized) {
revert AlreadyInitialized();
}
_setTableAddressValue(ADDRESS_CID, address(this));
_setTableAddressValue(OWNER_CID, msg.sender);
_setTableStringValue(NAME_CID, nameToSet);
_setTableUint256Value(ID_CID, id);
_initialized = true;
}
function getTableId() public virtual view returns (uint256) {
return getId();
}
function _getAndIncrementAutoIncId() internal returns (uint256) {
uint256 currentId = getTableUint256Value(NEXT_DOCID_CID);
_setTableUint256Value(NEXT_DOCID_CID, currentId + 1);
return currentId + 1;
}
function _incrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal {
uint256 currentAmount = getDocUint256Value(docId, columnId);
_setDocUint256Value(docId, columnId, currentAmount + amount);
}
function _decrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal {
uint256 currentAmount = getDocUint256Value(docId, columnId);
_setDocUint256Value(docId, columnId, currentAmount - amount);
}
function _setTableStringValue(uint256 columnId, string memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), 0, columnId, value);
}
function _setTableUint256Value(uint256 columnId, uint256 value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), 0, columnId, value);
}
function _setTableAddressValue(uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value);
}
function _setTableBoolValue(uint256 columnId, bool value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), 0, columnId, value);
}
function _setTableAdddressValue(uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value);
}
function _setTableUint256ArrayValue(uint256 columnId, uint256[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), 0, columnId, value);
}
function _setTableBoolArrayValue(uint256 columnId, bool[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), 0, columnId, value);
}
function _setTableAddressArrayValue(uint256 columnId, address[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), 0, columnId, value);
}
function _setDocAddressArrayValue(uint256 docId, uint256 columnId, address[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), docId, columnId, value);
}
function _setDocBoolArrayValue(uint256 docId, uint256 columnId, bool[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), docId, columnId, value);
}
function _setDocStringValue(uint256 docId, uint256 columnId, string memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), docId, columnId, value);
}
function _setDocUint256Value(uint256 docId, uint256 columnId, uint256 value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), docId, columnId, value);
}
function _setDocUint256ArrayValue(uint256 docId, uint256 columnId, uint256[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), docId, columnId, value);
}
function _setDocBoolValue(uint256 docId, uint256 columnId, bool value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), docId, columnId, value);
}
function _setDocAddressValue(uint256 docId, uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), docId, columnId, value);
}
function getTableBoolValue(uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), 0, columnId);
}
function getTableUint256Value(uint256 columnId) public view returns (uint256) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), 0, columnId);
}
function getTableStringValue(uint256 columnId) public view returns (string memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), 0, columnId);
}
function getTableAddressValue(uint256 columnId) public view returns (address) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), 0, columnId);
}
function getTableUint256ArrayValue(uint256 columnId) public view returns (uint256[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), 0, columnId);
}
function getDocUint256ArrayValue(uint256 docId, uint256 columnId) public view returns (uint256[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), docId, columnId);
}
function getDocStringValue(uint256 docId, uint256 columnId) public view returns (string memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), docId, columnId);
}
function getDocUint256Value(uint256 docId, uint256 columnId) public view returns (uint256) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), docId, columnId);
}
function getDocBoolValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), docId, columnId);
}
function getDocAddressValue(uint256 docId, uint256 columnId) public view returns (address) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), docId, columnId);
}
function hasDocStringValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasStringValue(getTableId(), docId, columnId);
}
function hasDocValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasValue(getTableId(), docId, columnId);
}
function getPlayerDocId(address player) public pure returns (uint256) {
return uint256(uint160(player));
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.system.vendor"));
interface IVendorSystem is IERC165 {
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.gameitemminter"));
interface IGameItemMinter is IERC165 {
function airdropGameItems(address[] memory to, uint256[] memory ids, uint256[] memory amounts) external;
function remintBalanceOfGameItems(address[] memory to, uint256[] memory ids) external;
function mintOffchain(address to, uint256 itemId, uint256 amount) external;
function batchMintOffchain(address to, uint256[] memory itemIds, uint256[] memory amounts) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.system.gigaJuice"));
interface IGigaJuiceSystem is IERC165 {
function isPlayerJuiced(address player) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
// Pauser Role - Can pause the game
bytes32 constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
// Minter Role - Can mint items, NFTs, and ERC20 currency
bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE");
// Manager Role - Can manage the shop, loot tables, and other game data
bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE");
// Depoloyer Role - Can Deploy new Systems
bytes32 constant DEPLOYER_ROLE = keccak256("DEPLOYER_ROLE");
// Game Logic Contract - Contract that executes game logic and accesses other systems
bytes32 constant GAME_LOGIC_CONTRACT_ROLE = keccak256("GAME_LOGIC_CONTRACT_ROLE");
// For functions callable from game server
bytes32 constant SERVER_JUDGE_ROLE = keccak256("SERVER_JUDGE_ROLE");// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
uint256 constant NAME_CID = uint256(keccak256("name"));
uint256 constant DESCRIPTION_CID = uint256(keccak256("description"));
uint256 constant LEVEL_CID = uint256(keccak256("level"));
uint256 constant IS_NOOB_CID = uint256(keccak256("is_noob"));
uint256 constant NOOB_TOKEN_CID = uint256(keccak256("noob_tokend_id"));
uint256 constant GIGA_NAME_TOKENDID_CID = uint256(keccak256("giganame_tokend_id"));
uint256 constant IS_GIGA_NAME_CID = uint256(keccak256("is_giga_name"));
uint256 constant GAME_ITEM_ID_CID = uint256(keccak256("game_item_id"));
uint256 constant UINT256_CID = uint256(keccak256("int256"));
uint256 constant ETH_MINT_PRICE_CID = uint256(keccak256("eth_mint_price"));
uint256 constant NEXT_DOCID_CID = uint256(keccak256("next_token_id"));
uint256 constant ID_CID = uint256(keccak256("id"));
uint256 constant BASE_NAME_CID = uint256(keccak256("base_name"));
uint256 constant BASE_URI_CID = uint256(keccak256("base_uri"));
uint256 constant LAST_TRANSFER_TIME_CID = uint256(keccak256("last_transfer_time"));
uint256 constant OWNER_CID = uint256(keccak256("owner"));
uint256 constant INITIALIZED_CID = uint256(keccak256("initialized"));
uint256 constant MAX_SUPPLY_CID = uint256(keccak256("max_supply"));
uint256 constant ADDRESS_CID = uint256(keccak256("address"));
uint256 constant IS_SOULBOUND_CID = uint256(keccak256("soulbound"));
uint256 constant TIME_BETWEEN_CID = uint256(keccak256("time_between"));
uint256 constant TIMESTAMP_CID = uint256(keccak256("timestamp"));
uint256 constant IMG_URL_CID = uint256(keccak256("img_url"));
uint256 constant PLAYER_CID = uint256(keccak256("player"));
uint256 constant MINT_COUNT_CID = uint256(keccak256("mint_count"));
uint256 constant CONTRACT_URI_CID = uint256(keccak256("contract_uri"));
uint256 constant IS_RECYCLABLE_CID = uint256(keccak256("is_recyclable"));
uint256 constant BURN_COUNT_CID = uint256(keccak256("burn_count"));
uint256 constant BALANCE_CID = uint256(keccak256("balance"));
uint256 constant ICON_URL_CID = uint256(keccak256("icon_url"));
uint256 constant DUNGEON_ID_CID = uint256(keccak256("dungeon_id"));
uint256 constant ENERGY_CID = uint256(keccak256("energy"));
uint256 constant IS_CANCELLED_CID = uint256(keccak256("is_cancelled"));
uint256 constant SPRITE_SHEET_URL_CID = uint256(keccak256("sprite_sheet_url"));
uint256 constant IMPORT_AMOUNT_CID = uint256(keccak256("import_amount"));
uint256 constant EXPORT_AMOUNT_CID = uint256(keccak256("export_amount"));
uint256 constant EXPORT_LICENSE_CID = uint256(keccak256("export_license"));
uint256 constant UNLOCKED_CID = uint256(keccak256("unlocked"));
uint256 constant FACTION_CID = uint256(keccak256("faction"));
uint256 constant REFERRER_CID = uint256(keccak256("referrer"));// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./DataTypes.sol";
import {IDataStore, ID} from "./IDataStore.sol";
import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol";
import {GAME_LOGIC_CONTRACT_ROLE} from "../constants/RoleConstants.sol";
contract DataStore is IDataStore, GameRegistryConsumer {
using DataTypes for *;
mapping(uint256 => mapping(uint256 => bytes32)) public datastore;
mapping(uint256 => mapping(uint256 => bytes32[])) public arrayStore;
mapping(uint256 => mapping(uint256 => string)) private stringStore;
mapping(uint256 => bytes32) public columnTypes;
constructor(address gameRegistryAddress) GameRegistryConsumer(gameRegistryAddress, ID) {}
function generateKey(uint256 docId, uint256 colId) public pure returns (uint256) {
return uint256(keccak256(abi.encodePacked(docId, colId)));
}
function generateArrayKey (uint256 docId, uint256 colId) public pure returns (uint256) {
return uint256(keccak256(abi.encodePacked(docId, colId, "__array")));
}
function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))] = value;
emit ValueSet(tableId, docId, colId, value);
}
function setArrayValue(uint256 tableId, uint256 docId, uint256 colId, bytes32[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
arrayStore[tableId][generateArrayKey(docId, colId)] = value;
emit ArrayValueSet(tableId, docId, colId, value);
}
function setUint256ArrayValue(uint256 tableId, uint256 docId, uint256 colId, uint256[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256ARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packUint256();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function setBoolArrayValue(uint256 tableId, uint256 docId, uint256 colId, bool[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOLARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packBool();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function setAddressArrayValue(uint256 tableId, uint256 docId, uint256 colId, address[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESSARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packAddress();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function getUint256Array(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
uint256[] memory uintArray = new uint256[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
uintArray[i] = byteArray[i].unpackUint256();
}
return uintArray;
}
function getBoolArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
bool[] memory boolArray = new bool[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
boolArray[i] = byteArray[i].unpackBool();
}
return boolArray;
}
function getAddressArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (address[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
address[] memory addressArray = new address[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
addressArray[i] = byteArray[i].unpackAddress();
}
return addressArray;
}
function getValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) {
return datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))];
}
function setColumnType(uint256 colId, IDataStore.ColumnType columnType) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require(!isColumnTypeSet(colId), "Column type already set");
columnTypes[colId] = bytes32(uint256(columnType));
emit ColumnTypeSet(colId, columnType);
}
function isColumnTypeSet(uint256 colId) public view returns (bool) {
return columnTypes[colId] != bytes32(0);
}
function getColumnType(uint256 colId) public view returns (IDataStore.ColumnType) {
bytes32 typeValue = columnTypes[colId];
require(typeValue != bytes32(0), "Column type not set");
return IDataStore.ColumnType(uint8(uint256(typeValue)));
}
// Type-specific setters
function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
setValue(tableId, docId, colId, value.packUint256());
}
function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256");
setValue(tableId, docId, colId, value.packInt256());
}
function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
setValue(tableId, docId, colId, value.packBool());
}
function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
setValue(tableId, docId, colId, value.packAddress());
}
function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32");
setValue(tableId, docId, colId, value);
}
function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING");
uint256 key = generateKey(docId, colId);
stringStore[tableId][key] = value;
emit StringValueSet(tableId, docId, colId, value);
}
function deleteValue(uint256 tableId, uint256 docId, uint256 colId) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
uint256 key = generateKey(docId, colId);
delete datastore[tableId][key];
}
// Type-specific getters
function getUint256(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256) {
require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
return getValue(tableId, docId, colId).unpackUint256();
}
function getInt256(uint256 tableId, uint256 docId, uint256 colId) public view returns (int256) {
require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256");
return getValue(tableId, docId, colId).unpackInt256();
}
function getBool(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
return getValue(tableId, docId, colId).unpackBool();
}
function getAddress(uint256 tableId, uint256 docId, uint256 colId) public view returns (address) {
require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
return getValue(tableId, docId, colId).unpackAddress();
}
function getBytes32(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) {
require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32");
return getValue(tableId, docId, colId);
}
function getString(uint256 tableId, uint256 docId, uint256 colId) public view returns (string memory) {
require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING");
uint256 key = generateKey(docId, colId);
return stringStore[tableId][key];
}
function hasValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
uint256 key = generateKey(docId, colId);
return datastore[tableId][key] != bytes32(0);
}
function hasStringValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
uint256 key = generateKey(docId, colId);
return keccak256(bytes(stringStore[tableId][key])) != keccak256(bytes(""));
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.13;
import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import {PAUSER_ROLE, MANAGER_ROLE} from "../constants/RoleConstants.sol";
import {ISystem} from "./ISystem.sol";
import {IGameRegistry, IERC165} from "./IGameRegistry.sol";
import {IDataStore, ID as DATA_STORE_ID} from "../db/IDataStore.sol";
import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
/** @title Contract that lets a child contract access the GameRegistry contract */
abstract contract GameRegistryConsumer is
ReentrancyGuard,
ISystem
{
/// @notice Whether or not the contract is paused
bool private _paused;
/// @notice Reference to the game registry that this contract belongs to
IGameRegistry internal _gameRegistry;
/// @notice Id for the system/component
uint256 private _id;
/** EVENTS **/
/// @dev Emitted when the pause is triggered by `account`.
event Paused(address account);
/// @dev Emitted when the pause is lifted by `account`.
event Unpaused(address account);
/** ERRORS **/
/// @notice Not authorized to perform action
error MissingRole(address account, bytes32 expectedRole);
/** MODIFIERS **/
/// @notice Modifier to verify a user has the appropriate role to call a given function
modifier onlyRole(bytes32 role) {
_checkRole(role, msg.sender);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/** ERRORS **/
/// @notice Error if the game registry specified is invalid
error InvalidGameRegistry();
/** SETUP **/
/** @return ID for this system */
function getId() public view override returns (uint256) {
return _id;
}
/**
* Pause/Unpause the contract
*
* @param shouldPause Whether or pause or unpause
*/
function setPaused(bool shouldPause) external onlyRole(PAUSER_ROLE) {
if (shouldPause) {
_pause();
} else {
_unpause();
}
}
/**
* @dev Returns true if the contract OR the GameRegistry is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused || _gameRegistry.paused();
}
/**
* Sets the GameRegistry contract address for this contract
*
* @param gameRegistryAddress Address for the GameRegistry contract
*/
function setGameRegistry(
address gameRegistryAddress
) external onlyRole(MANAGER_ROLE) {
_gameRegistry = IGameRegistry(gameRegistryAddress);
if (gameRegistryAddress == address(0)) {
revert InvalidGameRegistry();
}
}
/** @return GameRegistry contract for this contract */
function getGameRegistry() external view returns (IGameRegistry) {
return _gameRegistry;
}
/** INTERNAL **/
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function _hasAccessRole(
bytes32 role,
address account
) internal view returns (bool) {
return _gameRegistry.hasAccessRole(role, account);
}
/**
* @dev Revert with a standard message if `account` is missing `role`.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!_gameRegistry.hasAccessRole(role, account)) {
revert MissingRole(account, role);
}
}
/** @return Returns the dataStore for this contract */
function _dataStore() internal view returns (IDataStore) {
return IDataStore(_getSystem(DATA_STORE_ID));
}
/** @return Address for a given system */
function _getSystem(uint256 systemId) internal view returns (address) {
return _gameRegistry.getSystem(systemId);
}
/** PAUSABLE **/
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual {
require(_paused == false, "Pausable: not paused");
_paused = true;
emit Paused(msg.sender);
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual {
require(_paused == true, "Pausable: not paused");
_paused = false;
emit Unpaused(msg.sender);
}
function initialize() external virtual onlyRole(DEPLOYER_ROLE) { }
/**
* Constructor for this contract
*
* @param gameRegistryAddress Address of the GameRegistry contract
* @param id Id of the system/component
*/
constructor(
address gameRegistryAddress,
uint256 id
) {
_gameRegistry = IGameRegistry(gameRegistryAddress);
if (gameRegistryAddress == address(0)) {
revert InvalidGameRegistry();
}
_paused = true;
_id = id;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
library DataTypes {
// Pack and unpack uint256
function packUint256(uint256 value) internal pure returns (bytes32) {
return bytes32(value);
}
function unpackUint256(bytes32 packed) internal pure returns (uint256) {
return uint256(packed);
}
// Pack and unpack int256
function packInt256(int256 value) internal pure returns (bytes32) {
return bytes32(uint256(value));
}
function unpackInt256(bytes32 packed) internal pure returns (int256) {
return int256(uint256(packed));
}
// Pack and unpack address
function packAddress(address value) internal pure returns (bytes32) {
return bytes32(uint256(uint160(value)));
}
function unpackAddress(bytes32 packed) internal pure returns (address) {
return address(uint160(uint256(packed)));
}
// Pack and unpack bool
function packBool(bool value) internal pure returns (bytes32) {
return bytes32(uint256(value ? 1 : 0));
}
function unpackBool(bytes32 packed) internal pure returns (bool) {
return uint256(packed) == 1;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
uint256 constant ID = uint256(keccak256("game.gigaverse.datastore"));
interface IDataStore {
enum ColumnType { NONE, UINT256, INT256, BOOL, ADDRESS, BYTES32, STRING, UINT256_ARRAY }
event ValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32 value);
event StringValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, string value);
event ArrayValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32[] value);
event ColumnTypeSet(uint256 indexed colId, ColumnType columnType);
function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external;
function getValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32);
function setColumnType(uint256 colId, ColumnType columnType) external;
function getColumnType(uint256 colId) external view returns (ColumnType);
// Type-specific setters
function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) external;
function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) external;
function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) external;
function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) external;
function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external;
function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) external;
// Type-specific getters
function getUint256(uint256 tableId, uint256 docId, uint256 colId) external view returns (uint256);
function getInt256(uint256 tableId, uint256 docId, uint256 colId) external view returns (int256);
function getBool(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool);
function getAddress(uint256 tableId, uint256 docId, uint256 colId) external view returns (address);
function getBytes32(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32);
function getString(uint256 tableId, uint256 docId, uint256 colId) external view returns (string memory);
function deleteValue(uint256 tableId, uint256 docId, uint256 colId) external;
function hasValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
/**
* Defines a system the game engine
*/
interface ISystem {
/** @return The ID for the system. Ex: a uint256 casted keccak256 hash */
function getId() external view returns (uint256);
function initialize() external;
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
// @title Interface the game's ACL / Management Layer
interface IGameRegistry is IERC165 {
/**
* @dev Returns `true` if `account` has been granted `role`.
* @param role The role to query
* @param account The address to query
*/
function hasAccessRole(
bytes32 role,
address account
) external view returns (bool);
/**
* @return Whether or not the registry is paused
*/
function paused() external view returns (bool);
/**
* Registers a system by id
*
* @param systemId Id of the system
* @param systemAddress Address of the system contract
*/
function registerSystem(uint256 systemId, address systemAddress, bool isGameLogicContract) external;
/**
* @param systemId Id of the system
* @return System based on an id
*/
function getSystem(uint256 systemId) external view returns (address);
}{
"viaIR": false,
"codegen": "yul",
"remappings": [
"@limitbreak/creator-token-standards/=lib/creator-token-standards/",
"@openzeppelin/=lib/creator-token-standards/lib/openzeppelin-contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"murky/=lib/murky/src/",
"erc721a/=lib/ERC721A/",
"@creator-token-standards/=lib/creator-token-standards/src/",
"@limitbreak/permit-c/=lib/creator-token-standards/lib/PermitC/src/",
"@opensea/tstorish/=lib/creator-token-standards/lib/tstorish/src/",
"@rari-capital/solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/",
"ERC721A/=lib/ERC721A/contracts/",
"PermitC/=lib/creator-token-standards/lib/PermitC/",
"creator-token-standards/=lib/creator-token-standards/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-gas-metering/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/",
"forge-zksync-std/=lib/forge-zksync-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/creator-token-standards/lib/PermitC/lib/openzeppelin-contracts/contracts/",
"solady/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/lib/solady/",
"solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/src/",
"tstorish/=lib/creator-token-standards/lib/tstorish/src/"
],
"evmVersion": "cancun",
"outputSelection": {
"*": {
"*": [
"abi",
"metadata"
],
"": [
"ast"
]
}
},
"optimizer": {
"enabled": true,
"mode": "3",
"fallback_to_optimizing_for_size": false,
"disable_system_request_memoization": true
},
"metadata": {},
"libraries": {},
"enableEraVMExtensions": false,
"forceEVMLA": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"InvalidGameRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"expectedRole","type":"bytes32"}],"name":"MissingRole","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"cancelListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"uint256","name":"pricePerItem","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"bool","name":"requiresJuice","type":"bool"},{"internalType":"uint256","name":"limitPerPlayer","type":"uint256"},{"internalType":"uint256[]","name":"itemIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"createListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"doesListingRequireJuice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGameRegistry","outputs":[{"internalType":"contract IGameRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"getItemsInListing","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"getListingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"getListingRoyalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerDocId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerPurchasesRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTableId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocStringValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"isListingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"name":"setGameRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"importAmount","type":"uint256"}],"name":"setListingCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"}],"name":"supplyRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"updateListingPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"updateListingSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"listingId","type":"uint256"},{"internalType":"uint256","name":"newStartTime","type":"uint256"},{"internalType":"uint256","name":"newEndTime","type":"uint256"}],"name":"updateListingTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001000b7f91eb4d856557d9dea7af690683e18ea1fdf105cd540e4b9aed24258c0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Deployed Bytecode
0x0003000000000002000e000000000002000000000301034f000000600110027000000ada041001970002000000430355000100000003035500000001002001900000001f0000c13d0000008001000039000000400010043f000000040040008c000000420000413d000000000143034f000000000203043b000000e00220027000000ae20020009c000000440000213d00000afd0020009c000000770000a13d00000afe0020009c000000bb0000213d00000b050020009c000001920000a13d00000b060020009c000004250000613d00000b070020009c000003920000613d00000b080020009c000002280000613d000000420000013d0000000001000416000000000001004b000000420000c13d0000001f0140003900000adb011001970000008001100039000000400010043f0000001f0240018f00000adc054001980000008001500039000000300000613d0000008006000039000000000703034f000000007807043c0000000006860436000000000016004b0000002c0000c13d000000000002004b0000003d0000613d000000000353034f0000000302200210000000000501043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000210435000000200040008c000000420000413d000000800100043d00000add0010009c0000006f0000a13d000000000100001900002b660001043000000ae30020009c0000009c0000a13d00000ae40020009c000000d80000213d00000aeb0020009c000001c60000a13d00000aec0020009c0000043d0000613d00000aed0020009c0000039a0000613d00000aee0020009c000000420000c13d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add05100197000000a40050043f0000000001000414000000080220027000000add02200197000000040020008c000e00000004001d000c00000003001d000d00000005001d00000b600000c13d0000000003000031000000200030008c0000002004000039000000000403401900000b850000013d0000000102000039000000000020041b000000000001004b000000ea0000c13d00000b1c01000041000000000010043f00000b1d0100004100002b660001043000000b0b0020009c000000f90000a13d00000b0c0020009c0000016d0000a13d00000b0d0020009c000003f20000613d00000b0e0020009c000002970000613d00000b0f0020009c000000420000c13d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000003001d000d00000004001d000009e90000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a0e0000013d00000af10020009c000001100000a13d00000af20020009c0000017b0000a13d00000af30020009c000004110000613d00000af40020009c000002ac0000613d00000af50020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c00000a2f0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000a540000013d00000aff0020009c000001e50000a13d00000b000020009c0000045f0000613d00000b010020009c000003b50000613d00000b020020009c000000420000c13d000000240040008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000102000039000000000202041a00000b2103000041000000800030043f00000b2203000041000000840030043f0000000003000414000000080220027000000add02200197000000040020008c00000ba10000c13d0000000003000031000000200030008c0000002004000039000000000403401900000bc60000013d00000ae50020009c000002000000a13d00000ae60020009c000004780000613d00000ae70020009c000003d40000613d00000ae80020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000101000039000000000101041a000000080110027000000add01100197000000800010043f00000b170100004100002b650001042e000000000302041a00000ade03300197000000080110021000000adf01100197000000000131019f00000001011001bf000000000012041b00000ae0010000410000000202000039000000000012041b00000020010000390000010000100443000001200000044300000ae10100004100002b650001042e00000b120020009c0000012b0000213d00000b150020009c000002300000613d00000b160020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b00000b7300100198000000420000c13d00000b740010009c00000000020000390000000102006039000000000001004b00000001022061bf000000800020043f00000b170100004100002b650001042e00000af80020009c000001540000213d00000afb0020009c0000024b0000613d00000afc0020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b1801000041000000800010043f00000b3e01000041000000840010043f0000000001000411000000a40010043f0000000001000414000000080220027000000add02200197000000040020008c000005df0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006040000013d00000b130020009c000002540000613d00000b140020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b000e00000001001d2b6425860000040f000d00000001001d0000000e010000292b64268d0000040f0000004002000039000000400300043d000e00000003001d0000000002230436000b00000002001d000c00000001001d00000040023000390000000d010000292b641cc00000040f00000000020100190000000e0120006a0000000b0300002900000000001304350000000c010000292b641cc00000040f0000000e02000029000000000121004900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada010080410000006001100210000000000121019f00002b650001042e00000af90020009c000002670000613d00000afa0020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c0000061b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006400000013d00000b100020009c000002820000613d00000b110020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b00000add0010009c000000420000213d0000022d0000013d00000af60020009c000002280000613d00000af70020009c000000420000c13d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000007ef0000c13d0000000003000031000000200030008c00000020040000390000000004034019000008140000013d00000b090020009c000002c70000613d00000b0a0020009c000000420000c13d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000101043b000e00000001001d00000add0010009c000000420000213d0000000401300370000000000101043b000d00000001001d2b6421490000040f0000000e020000290000006003200210000000400200043d00000040042000390000000000340435000000340300003900000000033204360000000d040000290000000000430435000e00000001001d00000b490020009c000012660000213d0000006001200039000000400010043f00000ada0030009c00000ada030080410000004001300210000000000202043300000ada0020009c00000ada020080410000006002200210000000000112019f000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b4a011001c700008010020000392b642b5f0000040f0000000100200190000000420000613d000000000101043b0000041c0000013d00000aef0020009c000002e00000613d00000af00020009c000000420000c13d000000440040008c000000420000413d0000000002000416000000000002004b000000420000c13d0000002402300370000000000202043b000d00000002001d0000000402300370000000000202043b000e00000002001d0000000102000039000000000202041a00000b2103000041000000800030043f00000b2203000041000000840030043f0000000003000414000000080220027000000add02200197000000040020008c00000ac20000c13d0000000003000031000000200030008c0000002004000039000000000403401900000ae70000013d00000b030020009c000002ec0000613d00000b040020009c000000420000c13d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b000d00000001001d2b6422fb0000040f000e00000001001d0000000d010000292b641dbd0000040f00000add01100197000000400200043d000000200320003900000000001304350000000e01000029000000000012043500000ada0020009c00000ada02008041000000400120021000000b59011001c700002b650001042e00000ae90020009c000003770000613d00000aea0020009c000000420000c13d000000640040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b000e00000001001d0000002401300370000000000101043b000d00000001001d00000add0010009c000000420000213d0000004401300370000000000101043b000b00000001001d0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add01100197000c00000001001d000000a40010043f0000000001000414000000080220027000000add02200197000000040020008c00000df30000c13d0000000003000031000000200030008c0000002004000039000000000403401900000e180000013d0000000001000416000000000001004b000000420000c13d0000000201000039000000000101041a000000800010043f00000b170100004100002b650001042e000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000003001d000d00000004001d0000052d0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005520000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b2b641f100000040f000003960000013d0000000002000416000000000002004b000000420000c13d0000000102000039000000000202041a00000b2103000041000000800030043f00000b2203000041000000840030043f0000000003000414000000080220027000000add02200197000000040020008c000004870000c13d0000000003000031000000200030008c00000020040000390000000004034019000004ac0000013d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000003001d000d00000004001d0000059b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000005c00000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c0000068f0000c13d0000000003000031000000200030008c00000020040000390000000004034019000006b40000013d000000240040008c000000420000413d0000000002000416000000000002004b000000420000c13d0000000102000039000000000202041a00000b2103000041000000800030043f00000b2203000041000000840030043f0000000003000414000000080220027000000add02200197000000040020008c000006d40000c13d0000000003000031000000200030008c00000020040000390000000004034019000006f90000013d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000003001d000d00000004001d0000077c0000c13d0000000003000031000000200030008c00000020040000390000000004034019000007a10000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add01100197000e00000001001d000000a40010043f0000000001000414000000080220027000000add02200197000000040020008c000008310000c13d0000000003000031000000200030008c00000020040000390000000004034019000008560000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b2b641cdf0000040f000000000001004b00000000010000390000000101006039000004800000013d000001240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000008401300370000000000101043b000d00000001001d0000006401300370000000000101043b000e00000001001d0000004401300370000000000101043b000c00000001001d0000002401300370000000000101043b000b00000001001d0000000401300370000000000101043b000a00000001001d000000a401300370000000000101043b000000000001004b00000000020000390000000102006039000900000002001d0000000002000039000000010200c039000000000021004b000000420000c13d000000e401300370000000000101043b00000b290010009c000000420000213d0000002302100039000000000042004b000000420000813d0000000402100039000000000223034f000000000502043b00000b290050009c000012660000213d00000005025002100000003f0620003900000b390660019700000b5a0060009c000012660000213d0000008006600039000000400060043f000000800050043f00000024011000390000000002120019000000000042004b000000420000213d000000000005004b0000032c0000613d0000008005000039000000000613034f000000000606043b000000200550003900000000006504350000002001100039000000000021004b000003250000413d0000010401300370000000000101043b00000b290010009c000000420000213d0000002302100039000000000042004b000000000500001900000b330500804100000b3302200197000000000002004b000000000600001900000b330600404100000b330020009c000000000605c019000000000006004b000000420000c13d0000000402100039000000000223034f000000000202043b00000b290020009c000012660000213d00000005052002100000003f0650003900000b3906600197000000400700043d0000000006670019000800000007001d000000000076004b0000000007000039000000010700403900000b290060009c000012660000213d0000000100700190000012660000c13d000000400060043f0000000806000029000000000026043500000024011000390000000005150019000000000045004b000000420000213d000000000002004b0000035f0000613d0000000802000029000000000413034f000000000404043b000000200220003900000000004204350000002001100039000000000051004b000003580000413d0000000101000039000000000201041a000000400400043d00000b18010000410000000000140435000000040140003900000b19030000410000000000310435000000000100041100000add03100197000700000004001d0000002401400039000600000003001d00000000003104350000000001000414000000080220027000000add02200197000000040020008c000013190000c13d0000000003000031000000200030008c00000020040000390000000004034019000013430000013d000000440040008c000000420000413d0000000002000416000000000002004b000000420000c13d0000002402300370000000000202043b000d00000002001d0000000402300370000000000202043b000e00000002001d0000000102000039000000000202041a00000b2103000041000000800030043f00000b2203000041000000840030043f0000000003000414000000080220027000000add02200197000000040020008c000008bb0000c13d0000000003000031000000200030008c00000020040000390000000004034019000008e00000013d0000000001000416000000000001004b000000420000c13d2b641e980000040f000000000001004b0000000001000039000000010100c039000004800000013d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b2101000041000000800010043f00000b2201000041000000840010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000003001d000d00000004001d000009650000c13d0000000003000031000000200030008c000000200400003900000000040340190000098a0000013d000000440040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add05100197000000a40050043f0000000001000414000000080220027000000add02200197000000040020008c000e00000004001d000c00000003001d000d00000005001d000009a80000c13d0000000003000031000000200030008c00000020040000390000000004034019000009cd0000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b000e00000001001d00000add0010009c000000420000213d0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add03100197000000a40030043f0000000001000414000000080220027000000add02200197000000040020008c000d00000003001d00000d000000c13d0000000003000031000000200030008c0000002004000039000000000403401900000d250000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000201043b000000000002004b0000000001000039000000010100c039000e00000002001d000000000012004b000000420000c13d0000000101000039000000000201041a00000b1801000041000000800010043f00000b6e01000041000000840010043f0000000001000411000000a40010043f0000000001000414000000080220027000000add02200197000000040020008c00000d6b0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000d900000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b000d00000001001d2b6424ad0000040f000e00000001001d0000000d010000292b6422220000040f0000000e0110006b000004800000813d00000b4e01000041000000000010043f0000001101000039000000040010043f00000b230100004100002b66000104300000000001000416000000000001004b000000420000c13d0000000103000039000000000203041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add04100197000000a40040043f0000000001000414000000080220027000000add02200197000000040020008c000d00000003001d000e00000004001d00000a7c0000c13d0000000003000031000000200030008c0000002004000039000000000403401900000aa10000013d000000640040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000004401300370000000000101043b000c00000001001d0000002401300370000000000101043b000d00000001001d0000000401300370000000000101043b000e00000001001d0000000101000039000000000201041a00000b1801000041000000800010043f00000b1901000041000000840010043f000000000100041100000add01100197000b00000001001d000000a40010043f0000000001000414000000080220027000000add02200197000000040020008c00000c450000c13d0000000003000031000000200030008c0000002004000039000000000403401900000c6a0000013d000000440040008c000000420000413d0000002401300370000000000401043b0000000401300370000000000301043b0000000101000039000000000201041a000000ff0020019000000ab30000c13d000900000003001d000800000001001d00000b4601000041000000800010043f0000000001000414000000080220027000000add02200197000000040020008c000e00000004001d00000da60000c13d0000000003000031000000200030008c0000002004000039000000000403401900000dcb0000013d000000240040008c000000420000413d0000000001000416000000000001004b000000420000c13d0000000401300370000000000101043b2b6423d40000040f000000400200043d000000000012043500000ada0020009c00000ada02008041000000400120021000000b20011001c700002b650001042e00000ada0030009c00000ada03008041000000c00130021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000049b0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000004970000c13d000000000006004b000004a80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c7c0000613d0000001f02400039000000600420018f00000080024001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000205000039000000000505041a00000b30060000410000000e0a00002900000000006a043500000084064001bf0000000000560435000000c40540003900000b42060000410000000000650435000000a40440003900000000000404350000000004000414000000040020008c000004d30000613d0000004001a0021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada0330019700020000000103550000000100200190000010680000613d0000000e0a00002900000b75053001980000001f0630018f00000000045a0019000004dd0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000004d90000c13d000000000006004b000004ea0000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75041001970000000001a40019000000000041004b0000000004000039000000010400403900000b290010009c000012660000213d0000000100400190000012660000c13d000000400010043f00000b320030009c000000420000213d000000200030008c000000420000413d0000000e04000029000000000404043300000b290040009c000000420000213d0000000e063000290000000e034000290000001f04300039000000000064004b000000000500001900000b330500804100000b330440019700000b3307600197000000000874013f000000000074004b000000000400001900000b330400404100000b330080009c000000000405c019000000000004004b000000420000c13d000000004303043400000b290030009c000012660000213d0000001f0530003900000b75055001970000003f0550003900000b7505500197000000000515001900000b290050009c000012660000213d000000400050043f00000000053104360000000007430019000000000067004b000000420000213d00000b75063001970000001f0230018f000000000054004b0000137c0000813d000000000006004b000009610000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000005260000c13d000009610000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005410000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000053d0000c13d000000000006004b0000054e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c880000613d0000001f01400039000000600110018f00000080021001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3a040000410000000c05000029000000000045043500000084041001bf0000000000340435000000c4031000390000000d040000290000000000430435000000a4031000390000000e0400002900000000004304350000000003000414000000040020008c000009a40000613d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000c0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000005830000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000057f0000c13d000000000006004b000005900000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010740000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000420000413d000009a60000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005af0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000005ab0000c13d000000000006004b000005bc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000c940000613d0000001f01400039000000600110018f00000080021001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3d040000410000000c05000029000000000045043500000084041001bf0000000000340435000000c4031000390000000d040000290000000000430435000000a4031000390000000e0400002900000000004304350000000003000414000000040020008c00000e8b0000c13d0000000001150019000000400010043f0000000c02000029000000000202043300000a780000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005f30000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000005ef0000c13d000000000006004b000006000000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000ca00000613d0000001f01400039000000600110018f00000080021001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000000420000c13d000000000002004b00000eba0000c13d00000b1e01000041000000000010043f0000000001000411000000040010043f00000b3e01000041000000240010043f00000b1f0100004100002b660001043000000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000062f0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000062b0000c13d000000000006004b0000063c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cac0000613d0000001f01400039000000600110018f00000080021001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3c040000410000000e05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c0000082d0000613d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000e0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000006720000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000066e0000c13d000000000006004b0000067f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000fb50000c13d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000068a0000c13d000012a50000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000006a30000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000069f0000c13d000000000006004b000006b00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cb80000613d0000001f01400039000000600110018f00000080021001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3d040000410000000e05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c00000f5e0000c13d0000000001150019000000400010043f0000000e02000029000000000202043300000a780000013d00000ada0030009c00000ada03008041000000c00130021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000006e80000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000006e40000c13d000000000006004b000006f50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cc40000613d0000001f02400039000000600420018f00000080024001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000205000039000000000505041a00000b30060000410000000e0a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000105500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c000007220000613d0000004001a0021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada03300197000200000001035500000001002001900000109c0000613d0000000e0a00002900000b75053001980000001f0630018f00000000045a00190000072c0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000007280000c13d000000000006004b000007390000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75041001970000000001a40019000000000041004b0000000004000039000000010400403900000b290010009c000012660000213d0000000100400190000012660000c13d000000400010043f00000b320030009c000000420000213d000000200030008c000000420000413d0000000e04000029000000000404043300000b290040009c000000420000213d0000000e063000290000000e034000290000001f04300039000000000064004b000000000500001900000b330500804100000b330440019700000b3307600197000000000874013f000000000074004b000000000400001900000b330400404100000b330080009c000000000405c019000000000004004b000000420000c13d000000004303043400000b290030009c000012660000213d0000001f0530003900000b75055001970000003f0550003900000b7505500197000000000515001900000b290050009c000012660000213d000000400050043f00000000053104360000000007430019000000000067004b000000420000213d00000b75063001970000001f0230018f000000000054004b000013860000813d000000000006004b000009610000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000007750000c13d000009610000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000007900000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000078c0000c13d000000000006004b0000079d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cd00000613d0000001f01400039000000600110018f00000080021001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3b040000410000000c05000029000000000045043500000084041001bf0000000000340435000000c4031000390000000d040000290000000000430435000000a4031000390000000e0400002900000000004304350000000003000414000000040020008c000009a40000613d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000c0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000007d20000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000007ce0000c13d000000000006004b000007df0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000fe40000c13d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000007ea0000c13d000012a50000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008030000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007ff0000c13d000000000006004b000008100000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cdc0000613d0000001f01400039000000600110018f00000080021001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3c040000410000000e05000029000000000045043500000084041001bf0000000000340435000000c40310003900000b27040000410000000000430435000000a40310003900000000000304350000000003000414000000040020008c00000f8d0000c13d0000000001150019000000400010043f0000000e0200002900000a2b0000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008450000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008410000c13d000000000006004b000008520000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000ce80000613d0000001f01400039000000600110018f00000080021001bf000d00000002001d000000400020043f000000200030008c000000420000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000000420000c13d000000000002004b00000aaf0000613d0000000102000039000000000202041a00000b21040000410000000d05000029000000000045043500000084011001bf00000b220400004100000000004104350000000001000414000000080220027000000add02200197000000040020008c000010b40000c13d000000200030008c00000020030080390000001f01300039000000600110018f0000000001510019000000400010043f0000000d010000290000000001010433000e00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000d00000001001d00000b240100004100000000001004430000000e010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400400043d00000b6201000041000000000014043500000004014000390000000d02000029000000000021043500000004010000390000000101100367000000000101043b000000640240003900000001030000390000000000320435000000440240003900000b6d030000410000000000320435000d00000004001d0000002402400039000000000012043500000000010004140000000e02000029000000040020008c000008b60000613d0000000d0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000e020000292b642b5a0000040f000000600310027000000ada0030019d00020000000103550000000100200190000012de0000613d0000000d0100002900000000020000192b641ccd0000040f000000000100001900002b650001042e00000ada0030009c00000ada03008041000000c00130021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008cf0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008cb0000c13d000000000006004b000008dc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000cf40000613d0000001f02400039000000600420018f00000080024001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000205000039000000000505041a00000b30060000410000000c0a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000d060000290000000000650435000000a4044000390000000e0500002900000000005404350000000004000414000000040020008c000009080000613d0000004001a0021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada0330019700020000000103550000000100200190000010e30000613d0000000c0a00002900000b75053001980000001f0630018f00000000045a0019000009120000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000090e0000c13d000000000006004b0000091f0000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75041001970000000001a40019000000000041004b0000000004000039000000010400403900000b290010009c000012660000213d0000000100400190000012660000c13d000000400010043f00000b320030009c000000420000213d000000200030008c000000420000413d0000000c04000029000000000404043300000b290040009c000000420000213d0000000c063000290000000c034000290000001f04300039000000000064004b000000000500001900000b330500804100000b330440019700000b3307600197000000000874013f000000000074004b000000000400001900000b330400404100000b330080009c000000000405c019000000000004004b000000420000c13d000000004303043400000b290030009c000012660000213d0000001f0530003900000b75055001970000003f0550003900000b7505500197000000000515001900000b290050009c000012660000213d000000400050043f00000000053104360000000007430019000000000067004b000000420000213d00000b75063001970000001f0230018f000000000054004b000013900000813d000000000006004b000009610000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c0000095b0000c13d000000000002004b000013a60000613d00000000070500190000139c0000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009790000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009750000c13d000000000006004b000009860000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d3b0000613d0000001f01400039000000600110018f00000080021001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b35040000410000000c05000029000000000045043500000084041001bf0000000000340435000000c4031000390000000d040000290000000000430435000000a4031000390000000e0400002900000000004304350000000003000414000000040020008c00000fbc0000c13d0000000001150019000000400010043f0000000c0200002900000a720000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009bc0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009b80000c13d000000000006004b000009c90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d470000613d0000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000000420000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000420000c13d000000000003004b00000d330000613d0000000e02000029000000000002004b000010ef0000c13d00000b2c03000041000000000031043500000084035001bf00000020040000390000000000430435000000c40350003900000b45040000410000000000430435000000a4025000390000001d0300003900000abe0000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009fd0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009f90000c13d000000000006004b00000a0a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d530000613d0000001f01400039000000600110018f00000080021001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3c040000410000000c05000029000000000045043500000084041001bf0000000000340435000000c4031000390000000d040000290000000000430435000000a4031000390000000e0400002900000000004304350000000003000414000000040020008c00000feb0000c13d0000000001150019000000400010043f0000000c02000029000000000202043300000add0020009c000000420000213d00000a780000013d00000ada0010009c00000ada01008041000000c00110021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a430000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a3f0000c13d000000000006004b00000a500000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000d5f0000613d0000001f01400039000000600110018f00000080021001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000203000039000000000303041a00000b3a040000410000000e05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000103300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c0000101a0000c13d0000000001150019000000400010043f0000000e020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000420000c13d0000000000210435000000400110021000000b20011001c700002b650001042e00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a900000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a8c0000c13d000000000006004b00000a9d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000de70000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000420000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000420000c13d000000000001004b000010490000c13d00000b1e01000041000000000010043f0000000e0100002900000d360000013d0000008001000039000000440210003900000b4803000041000000000032043500000024021000390000001003000039000000000032043500000b2c020000410000000000210435000000040210003900000020030000390000000000320435000000400110021000000b31011001c700002b660001043000000ada0030009c00000ada03008041000000c00130021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000ad60000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000ad20000c13d000000000006004b00000ae30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e2b0000613d0000001f02400039000000600420018f00000080024001bf000c00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000205000039000000000505041a00000b38060000410000000c0a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000d060000290000000000650435000000a4044000390000000e0500002900000000005404350000000004000414000000040020008c00000b0f0000613d0000004001a0021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada0330019700020000000103550000000100200190000011370000613d0000000c0a00002900000b75053001980000001f0630018f00000000045a001900000b190000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000b150000c13d000000000006004b00000b260000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75021001970000000001a20019000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f00000b320030009c000000420000213d000000200030008c000000420000413d0000000c02000029000000000202043300000b290020009c000000420000213d0000000c033000290000000c022000290000001f04200039000000000034004b000000000500001900000b330500804100000b330440019700000b3306300197000000000764013f000000000064004b000000000400001900000b330400404100000b330070009c000000000405c019000000000004004b000000420000c13d000000002502043400000b290050009c000012660000213d00000005045002100000003f0640003900000b3906600197000000000616001900000b290060009c000012660000213d000000400060043f00000000005104350000000004240019000000000034004b000000420000213d000000000005004b00000c3f0000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b00000b5a0000413d00000c3f0000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000b740000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000b700000c13d000000000006004b00000b810000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e370000613d0000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000000420000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000420000c13d000000000003004b00000d330000613d0000000e02000029000000000002004b000011b20000c13d00000b2c03000041000000000031043500000084035001bf00000020040000390000000000430435000000c40350003900000b34040000410000000000430435000000a4025000390000001c0300003900000abe0000013d00000ada0030009c00000ada03008041000000c00130021000000b2f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000bb50000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000bb10000c13d000000000006004b00000bc20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e430000613d0000001f02400039000000600420018f00000080024001bf000e00000002001d000000400020043f000000200030008c000000420000413d000000800200043d00000add0020009c000000420000213d0000000205000039000000000505041a00000b38060000410000000e0a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000105500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c00000bef0000613d0000004001a0021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada0330019700020000000103550000000100200190000011b60000613d0000000e0a00002900000b75053001980000001f0630018f00000000045a001900000bf90000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000bf50000c13d000000000006004b00000c060000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75021001970000000001a20019000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f00000b320030009c000000420000213d000000200030008c000000420000413d0000000e02000029000000000202043300000b290020009c000000420000213d0000000e033000290000000e022000290000001f04200039000000000034004b000000000500001900000b330500804100000b330440019700000b3306300197000000000764013f000000000064004b000000000400001900000b330400404100000b330070009c000000000405c019000000000004004b000000420000c13d000000002502043400000b290050009c000012660000213d00000005045002100000003f0640003900000b3906600197000000000616001900000b290060009c000012660000213d000000400060043f00000000005104350000000004240019000000000034004b000000420000213d000000000005004b00000c3f0000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b00000c3a0000413d000000400300043d000e00000003001d000000200200003900000000022304362b641cc00000040f000013ad0000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000c590000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000c550000c13d000000000006004b00000c660000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e4f0000613d0000001f01400039000000600510018f00000080015001bf000000400010043f000000200030008c000000420000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000420000c13d000000000003004b0000105d0000c13d00000b1e01000041000000000010043f0000000b0100002900000d360000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c830000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c8f0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000c9b0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ca70000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cb30000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cbf0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ccb0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cd70000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000ce30000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cef0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000cfb0000c13d000012a50000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000800a000039000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000d140000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000d100000c13d000000000006004b00000d210000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e5b0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000000420000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000000420000c13d000000000001004b000010f30000c13d00000b1e01000041000000000010043f0000000d01000029000000040010043f00000b1901000041000000240010043f00000b1f0100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d420000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d4e0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d5a0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d660000c13d000012a50000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000d7f0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000d7b0000c13d000000000006004b00000d8c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e670000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200030008c000000420000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000420000c13d000000000003004b000011220000c13d00000b1e01000041000000000010043f0000000001000411000000040010043f00000b6e01000041000000240010043f00000b1f0100004100002b660001043000000ada0010009c00000ada01008041000000c00110021000000b47011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000dba0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000db60000c13d000000000006004b00000dc70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e730000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200030008c000000420000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000000420000c13d000000000003004b00000ab40000c13d000000000300041a000000020030008c000011fe0000c13d00000b2c03000041000000000031043500000084032001bf00000020040000390000000000430435000000c40320003900000b58040000410000000000430435000000a4022000390000001f0300003900000abe0000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dee0000c13d000012a50000013d00000ada0010009c00000ada01008041000000c00110021000000b1a011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000e070000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000e030000c13d000000000006004b00000e140000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000000e7f0000613d0000001f01400039000000600110018f00000080021001bf000a00000002001d000000400020043f000000200030008c000000420000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000000420000c13d000000000002004b000011430000c13d00000b1e01000041000000000010043f0000000c0100002900000d360000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e320000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e3e0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e4a0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e560000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e620000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e6e0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e7a0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000e860000c13d000012a50000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000c0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000ea20000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000e9e0000c13d000000000006004b00000eaf0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010800000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000005dc0000813d000000420000013d000000c002100039000000400020043f0000000c020000390000000e040000290000000000240435000000a00410003900000b3f0200004100000000002404350000000302000039000000000202041a000000ff002001900000108c0000c13d000d00000004001d0000000102000039000000000202041a000000400b00043d00000b210400004100000000004b04350000000404b0003900000b220500004100000000005404350000000004000414000000080220027000000add02200197000000040020008c00000f020000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b23011001c7000c0000000b001d2b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c0b0000290000000c0570002900000eef0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000eeb0000c13d000000000006004b00000efc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000012480000613d0000001f01400039000000600110018f0000000002b10019000000000012004b0000000001000039000000010100403900000b290020009c000012660000213d0000000100100190000012660000c13d000000400020043f000000200030008c000000420000413d00000000010b0433000c00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000b00000001001d00000b240100004100000000001004430000000c010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000000020004100000000000210435000000440130003900000b4102000041000000000021043500000b260100004100000000001304350000000401300039000900000001001d0000000b020000290000000000210435000a00000003001d0000002401300039000000000001043500000000010004140000000c02000029000000040020008c00000f480000613d0000000a0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000c020000292b642b5a0000040f000000600310027000000ada0030019d00020000000103550000000100200190000014380000613d0000000a0100002900000b290010009c000012660000213d0000000a03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b2201000041000000090300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c000014450000c13d0000000003000031000000200030008c000000200400003900000000040340190000146f0000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000e0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000f750000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000f710000c13d000000000006004b00000f820000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010900000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000420000413d000006d10000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000e0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000fa40000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000fa00000c13d000000000006004b00000fb10000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010a80000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c0000082f0000813d000000420000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000c0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000fd30000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000fcf0000c13d000000000006004b00000fe00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000010fe0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000009a60000813d000000420000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000c0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000010020000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000ffe0000c13d000000000006004b0000100f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000110a0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000420000413d00000a2a0000013d00000ada0030009c00000ada03008041000000c0013002100000004003500210000000000131019f00000b31011001c72b642b5f0000040f0000000e0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000010310000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000102d0000c13d000000000006004b0000103e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000011160000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000a710000813d000000420000013d00000b6b01000041000000000010044300000000010004100000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c70000800a020000392b642b5f0000040f000000010020019000001c740000613d000000000301043b00000000010004140000000004000411000000040040008c000012130000c13d00000000010000310000125d0000013d0000000d020000290000000c0320006b000011c20000a13d0000000e01000029000d00000003001d2b6429160000040f0000000e010000290000000d020000292b6429d70000040f000000000100001900002b650001042e0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000106f0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000107b0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010870000c13d000012a50000013d00000b4001000041000000000010043f00000b1d0100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010970000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010a30000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010af0000c13d000012a50000013d00000ada0010009c00000ada01008041000000c0011002100000004003500210000000000131019f00000b23011001c72b642b5f0000040f0000000d0b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000010cb0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000010c70000c13d000000000006004b000010d80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000011d30000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000000420000413d000008780000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010ea0000c13d000012a50000013d0000000c010000292b6428550000040f000000000100001900002b650001042e0000000e03000029000000080130021000000adf011001970000000104000039000000000204041a00000b1b02200197000000000112019f000000000014041b000000000003004b000000730000613d000012620000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011050000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011110000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000111d0000c13d000012a50000013d0000000103000039000000000503041a000000ff0450018f0000000e0000006b000011df0000c13d000000000004004b000011f30000613d00000b7602500197000000000023041b000000000200041100000000002104350000004001100210000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b6f011001c70000800d0200003900000b7104000041000011ef0000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000113e0000c13d000012a50000013d0000000102000039000000000202041a00000b21040000410000000a05000029000000000045043500000084011001bf00000b220400004100000000004104350000000001000414000000080220027000000add02200197000000040020008c0000121a0000c13d000000200030008c00000020030080390000001f01300039000000600110018f0000000001510019000000400010043f0000000a010000290000000001010433000c00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000a00000001001d00000b240100004100000000001004430000000c010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400200043d00000b2601000041000000000012043500000064032000390000000d01000029000800000003001d0000000000130435000000440320003900000b2701000041000700000003001d000000000013043500000024032000390000000e01000029000600000003001d0000000000130435000900000002001d0000000401200039000d00000001001d0000000a02000029000000000021043500000000010004140000000c02000029000000040020008c000011960000613d000000090200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000c020000292b642b5a0000040f000000600310027000000ada0030019d000200000001035500000001002001900000135d0000613d000000090100002900000b290010009c000012660000213d0000000901000029000000400010043f0000000b01000029000027110010008c0000136a0000413d00000b2c010000410000000902000029000000000012043500000020010000390000000d03000029000000000013043500000031010000390000000603000029000000000013043500000b2d010000410000000703000029000000000013043500000b2e010000410000000803000029000000000013043500000ada0020009c00000ada02008041000000400120021000000b28011001c700002b66000104300000000c010000292b6427940000040f000000000100001900002b650001042e0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011bd0000c13d000012a50000013d00000b2c03000041000000000031043500000084035001bf00000020040000390000000000430435000000e40350003900000b36040000410000000000430435000000c40350003900000b37040000410000000000430435000000a40250003900000022030000390000000000320435000000400110021000000b28011001c700002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011da0000c13d000012a50000013d000000000004004b000011f30000c13d00000b760250019700000001022001bf000000000023041b000000000200041100000000002104350000004001100210000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b6f011001c70000800d0200003900000b70040000412b642b5a0000040f0000000100200190000000420000613d000012620000013d00000b2c03000041000000000031043500000084032001bf00000020040000390000000000430435000000c40320003900000b72040000410000000000430435000000a402200039000000140300003900000abe0000013d0000000201000039000000000010041b00000009010000292b6423d40000040f0000000e0200002900030000002100ad000000000001004b000012090000613d00000003011000f9000000000021004b0000041f0000c13d00000000020004160002000300200074000012b80000813d000000400100043d000000440210003900000b5703000041000000000032043500000024021000390000001403000039000012c20000013d00000ada0010009c00000ada01008041000000c001100210000000000003004b000012540000c13d0000000002040019000012570000013d00000ada0010009c00000ada01008041000000c0011002100000004003500210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a05700029000012300000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b0000122c0000c13d000000000006004b0000123d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000129a0000613d0000001f01400039000000600110018f0000000a01100029000000400010043f000000200030008c000011560000813d000000420000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000124f0000c13d000012a50000013d00000b4a011001c7000080090200003900000000050000192b642b5a0000040f000d00000002001d0002000000010355000000600110027000000ada0010019d00000ada01100197000000000001004b000012640000c13d0000000d0100002900000001001001900000126c0000613d000000000100001900002b650001042e00000b290010009c000012730000a13d00000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000400100043d000000440210003900000b6c03000041000000000032043500000024021000390000000f03000039000012c20000013d0000001f0310003900000b75033001970000003f0330003900000b7504300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000b290040009c000012660000213d0000000100500190000012660000c13d000000400040043f000000000513043600000b75021001980000001f0310018f000000000125001900000002040003670000128c0000613d000000000604034f000000006706043c0000000005750436000000000015004b000012880000c13d000000000003004b0000125f0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000125f0000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000012a10000c13d000000000005004b000012b20000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b660001043000000009010000292b641f100000040f000000000001004b000012cd0000c13d000000400100043d000000440210003900000b5603000041000000000032043500000024021000390000001203000039000000000032043500000b2c02000041000000000021043500000004021000390000002003000039000000000032043500000ada0010009c00000ada01008041000000400110021000000b31011001c700002b660001043000000009010000292b6424ad0000040f000d00000001001d00000009010000292b6422220000040f0000000d0110006b0000000e020000290000041f0000413d000000000021004b000012eb0000813d000000400100043d000000440210003900000b5503000041000000000032043500000024021000390000001303000039000012c20000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000012e60000c13d000012a50000013d00000009010000292b6421490000040f0000003403000039000000400200043d000000000332043600000009040000290000000000430435000000000400041100000060054002100000004004200039000100000005001d0000000000540435000d00000001001d00000b490020009c000012660000213d0000006001200039000000400010043f00000ada0030009c00000ada030080410000004001300210000000000202043300000ada0020009c00000ada020080410000006002200210000000000112019f000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b4a011001c700008010020000392b642b5f0000040f0000000100200190000000420000613d000000000101043b2b6422220000040f0000000d0110006b0000000e020000290000041f0000413d000000000021004b000014f10000813d000000400100043d000000440210003900000b54030000410000120f0000013d000000070300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b1f011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000013320000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b0000132e0000c13d000000000006004b0000133f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000013b70000613d0000001f01400039000000600210018f0000000701200029000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f000000200030008c000000420000413d00000007020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000420000c13d000000000002004b000014e10000c13d00000b1e01000041000000000010043f000000060100002900000d360000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013650000c13d000012a50000013d0000000101000039000000000201041a00000b21010000410000000903000029000000000013043500000b22010000410000000d0300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c000013c30000c13d0000000003000031000000200030008c00000020040000390000000004034019000013ed0000013d0000000007650019000000000006004b000013990000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000013810000c13d000013990000013d0000000007650019000000000006004b000013990000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b0000138b0000c13d000013990000013d0000000007650019000000000006004b000013990000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000013950000c13d000000000002004b000013a60000613d00000000046400190000000302200210000000000607043300000000062601cf000000000626022f00000000040404330000010002200089000000000424022f00000000022401cf000000000262019f0000000000270435000000000253001900000000000204350000002002000039000000400300043d000e00000003001d00000000022304362b641c8e0000040f0000000e02000029000000000121004900000ada0010009c00000ada01008041000000600110021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b650001042e0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013be0000c13d000012a50000013d000000090300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000905700029000013dc0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000013d80000c13d000000000006004b000013e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000014c90000613d0000001f01400039000000600110018f000000090110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d00000009010000290000000001010433000d00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000c00000001001d00000b240100004100000000001004430000000d010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d00000064013000390000000b020000290000000000210435000000440130003900000b2a02000041000000000021043500000024013000390000000e02000029000000000021043500000b2b010000410000000000130435000e00000003001d00000004013000390000000c02000029000000000021043500000000010004140000000d02000029000000040020008c000014310000613d0000000e0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000d020000292b642b5a0000040f000000600310027000000ada0030019d00020000000103550000000100200190000016940000613d0000000e0100002900000b290010009c000012660000213d0000000e01000029000000400010043f000000000100001900002b650001042e00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014400000c13d000012a50000013d0000000a0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a057000290000145e0000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b0000145a0000c13d000000000006004b0000146b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000014d50000613d0000001f01400039000000600110018f0000000a0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000a010000290000000001010433000c00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000b00000001001d00000b240100004100000000001004430000000c010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000000020004110000000000210435000000440130003900000b2702000041000000000021043500000b260100004100000000001304350000000401300039000900000001001d0000000b020000290000000000210435000a00000003001d0000002401300039000000000001043500000000010004140000000c02000029000000040020008c000014b30000613d0000000a0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000c020000292b642b5a0000040f000000600310027000000ada0030019d00020000000103550000000100200190000016a90000613d0000000a0100002900000b290010009c000012660000213d0000000a03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b2201000041000000090300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c000016b60000c13d0000000003000031000000200030008c00000020040000390000000004034019000016e00000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014d00000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014dc0000c13d000012a50000013d0000000d03000029000d000e00300074000015080000a13d00000008020000290000000003020433000000800200043d000000000032004b000015110000c13d000000000002004b000016660000c13d000000440210003900000b6a03000041000000000032043500000024021000390000001f03000039000012c20000013d00000009010000292b641cdf0000040f000000000001004b000015ab0000c13d0000000101000039000000000201041a000000400300043d00000b21010000410000000000130435000d00000003001d000000040130003900000b4b0300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c000015240000c13d0000000003000031000000200030008c000000200400003900000000040340190000154e0000013d000000640210003900000b36030000410000000000320435000000440210003900000b3703000041000000000032043500000024021000390000002203000039000015190000013d000000640210003900000b5b030000410000000000320435000000440210003900000b5c03000041000000000032043500000024021000390000002e03000039000000000032043500000b2c02000041000000000021043500000004021000390000002003000039000000000032043500000ada0010009c00000ada01008041000000400110021000000b28011001c700002b66000104300000000d0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d057000290000153d0000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b000015390000c13d000000000006004b0000154a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000167d0000613d0000001f01400039000000600110018f0000000d04100029000000000014004b00000000020000390000000102004039000c00000004001d00000b290040009c000012660000213d0000000100200190000012660000c13d0000000c02000029000000400020043f000000200030008c000000420000413d0000000d02000029000000000202043300000add0020009c000000420000213d00000b4c040000410000000c0500002900000000004504350000000404500039000000000500041100000000005404350000000004000414000000040020008c000015960000613d0000000c0100002900000ada0010009c00000ada01008041000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000015830000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b0000157f0000c13d000000000006004b000015900000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000017940000613d0000001f01400039000000600110018f0000000c0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000c020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000000420000c13d000000000002004b000015ab0000c13d000000440210003900000b5303000041000000000032043500000024021000390000001103000039000012c20000013d00000009010000292b6425860000040f000700000001001d00000009010000292b64268d0000040f0000000102000039000000000202041a000000400400043d00000b21030000410000000000340435000d00000004001d000000040340003900000b4d040000410000000000430435000600000001001d0000000001000414000000080220027000000add02200197000000040020008c000015c40000c13d0000000003000031000000200030008c00000020040000390000000004034019000015ee0000013d0000000d0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d05700029000015dd0000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b000015d90000c13d000000000006004b000015ea0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000016710000613d0000001f01400039000000600210018f0000000d01200029000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f000000200030008c000000420000413d0000000d010000290000000001010433000d00000001001d00000add0010009c000000420000213d00000007010000290000000001010433000000000001004b000017290000c13d00000009010000292b6422220000040f0000000e02000029000000000021001a0000041f0000413d000000000221001900000009010000292b642a980000040f000000400100043d000000400210003900000001030000290000000000320435000000340200003900000000022104360000000903000029000000000032043500000b490010009c000012660000213d0000006003100039000000400030043f00000ada0020009c00000ada020080410000004002200210000000000101043300000ada0010009c00000ada010080410000006001100210000000000121019f000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b4a011001c700008010020000392b642b5f0000040f0000000100200190000000420000613d000000000101043b000d00000001001d2b6422220000040f0000000e02000029000000000021001a0000041f0000413d00000000022100190000000d010000292b642a980000040f000000400100043d000000400210003900000001030000290000000000320435000000340200003900000000022104360000000903000029000000000032043500000b490010009c000012660000213d0000006003100039000000400030043f00000ada0020009c00000ada020080410000004002200210000000000101043300000ada0010009c00000ada010080410000006001100210000000000121019f000000000200041400000ada0020009c00000ada02008041000000c002200210000000000112019f00000b4a011001c700008010020000392b642b5f0000040f0000000100200190000000420000613d000000000101043b000c00000001001d0000000101000039000000000201041a000000400300043d00000b21010000410000000000130435000d00000003001d000000040130003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c000018790000c13d0000000003000031000000200030008c00000020040000390000000004034019000018a30000013d0000000c0000006b000016890000c13d000000640210003900000b68030000410000000000320435000000440210003900000b6903000041000000000032043500000024021000390000002303000039000015190000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016780000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016840000c13d000012a50000013d0000000b0000006b000016a10000c13d000000640210003900000b66030000410000000000320435000000440210003900000b6703000041000000000032043500000024021000390000002503000039000015190000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000169c0000c13d000012a50000013d0000000a0000006b0000177d0000c13d000000640210003900000b63030000410000000000320435000000440210003900000b6503000041000017840000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016b10000c13d000012a50000013d0000000a0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a05700029000016cf0000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000016cb0000c13d000000000006004b000016dc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000017880000613d0000001f01400039000000600110018f0000000a0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000a010000290000000001010433000c00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000b00000001001d00000b240100004100000000001004430000000c010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000b4202000041000000000021043500000b430100004100000000001304350000000401300039000900000001001d0000000b020000290000000000210435000000240130003900000000000104350000000e0100002900000000010104330000008402300039000000000012043500000b75051001970000001f0410018f000a00000003001d000000a4033000390000000d0030006b000019080000813d000000000005004b000017250000613d0000000d074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c0000171f0000c13d000000000004004b0000191f0000613d0000000006030019000019140000013d0000000601000029000500200010003d0000000701000029000400200010003d000000000200001900000006010000290000000001010433000000000021004b0000000e030000290000185a0000a13d000a00000002001d000000050120021000000004021000290000000002020433000c00000002001d0000000501100029000000000101043300000000023100a9000000000001004b000017400000613d00000000011200d9000000000031004b0000041f0000c13d000b00000002001d00000b240100004100000000001004430000000d010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400400043d00000044014000390000000b02000029000000000021043500000024014000390000000c02000029000000000021043500000b4f01000041000000000014043500000004014000390000000002000411000000000021043500000000010004140000000d02000029000000040020008c000017730000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b31011001c70000000d02000029000c00000004001d2b642b5a0000040f0000000c04000029000000600310027000000ada0030019d000200000001035500000001002001900000186c0000613d00000b290040009c000012660000213d000000400040043f0000000a02000029000000010220003900000007010000290000000001010433000000000012004b0000172e0000413d000016040000013d0000000e0000006b000017a00000c13d000000640210003900000b63030000410000000000320435000000440210003900000b6403000041000000000032043500000024021000390000002103000039000015190000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000178f0000c13d000012a50000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000179b0000c13d000012a50000013d0000000a010000290000000b020000292b6427940000040f0000000a010000290000000c020000292b6428550000040f0000000a010000290000000e020000292b6429160000040f0000000a010000290000000d020000292b6429d70000040f0000000101000039000000000201041a00000b2101000041000000400300043d000000000013043500000b2201000041000e00000003001d000000040330003900000000001304350000000001000414000000080220027000000add02200197000000040020008c000017bf0000c13d0000000003000031000000200030008c00000020040000390000000004034019000017e90000013d0000000e0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000e05700029000017d80000613d000000000801034f0000000e09000029000000008a08043c0000000009a90436000000000059004b000017d40000c13d000000000006004b000017e50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000018600000613d0000001f01400039000000600210018f0000000e01200029000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f000000200030008c000000420000413d0000000e010000290000000001010433000e00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000d00000001001d00000b240100004100000000001004430000000e010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400400043d000000640240003900000080010000390000000000120435000000440240003900000b5d03000041000000000032043500000024024000390000000a03000029000000000032043500000b5e0200004100000000002404350000000402400039000b00000002001d0000000d0300002900000000003204350000008402400039000000800300043d0000000000320435000c00000004001d000000a402400039000000000003004b0000182c0000613d00000000040000190000002001100039000000000501043300000000025204360000000104400039000000000034004b000018260000413d00000000010004140000000e03000029000000040030008c000018440000613d0000000c03000029000000000232004900000ada0020009c00000ada02008041000000600220021000000ada0030009c00000ada030080410000004003300210000000000232019f00000ada0010009c00000ada01008041000000c001100210000000000112019f0000000e020000292b642b5a0000040f000000600310027000000ada0030019d00020000000103550000000100200190000019ef0000613d0000000c0100002900000b290010009c000012660000213d0000000c03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b22010000410000000b0300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c000019fc0000c13d0000000003000031000000200030008c0000002004000039000000000403401900001a260000013d00000b4e01000041000000000010043f0000003201000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018670000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018740000c13d000012a50000013d0000000d0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d05700029000018920000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b0000188e0000c13d000000000006004b0000189f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000019510000613d0000001f01400039000000600210018f0000000d01200029000000000021004b0000000002000039000000010200403900000b290010009c000012660000213d0000000100200190000012660000c13d000000400010043f000000200030008c000000420000413d0000000d010000290000000001010433000d00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000b00000001001d00000b240100004100000000001004430000000d010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000000020004110000000000210435000000440130003900000b5002000041000000000021043500000024013000390000000c02000029000000000021043500000b26010000410000000000130435000c00000003001d00000004013000390000000b02000029000000000021043500000000010004140000000d02000029000000040020008c000018ec0000613d0000000c0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000d020000292b642b5a0000040f000000600310027000000ada0030019d0002000000010355000000010020019000001aa10000613d0000000c0100002900000b290010009c000012660000213d0000000c01000029000000400010043f00000009010000292b6422fb0000040f000d00000001001d000000000001004b00001b670000613d00000009010000292b641dbd0000040f00000add0410019800001b670000613d000000030000006b00001b670000613d0000000d0300002900000003013000b900000003021000fa000000000032004b0000041f0000c13d000027100010008c00001b670000413d0000000002000414000000040040008c00001b4f0000c13d000000000100003100001b5c0000013d0000000006530019000000000005004b000019110000613d0000000d07000029000000000803001900000000790704340000000008980436000000000068004b0000190d0000c13d000000000004004b0000191f0000613d000d000d0050002d0000000304400210000000000506043300000000054501cf000000000545022f0000000d0700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000000003310019000000000003043500000000030004140000000c04000029000000040040008c0000193b0000613d0000001f0110003900000b7501100197000000a40110003900000ada0010009c00000ada0100804100000060011002100000000a0200002900000ada0020009c00000ada020080410000004002200210000000000121019f00000ada0030009c00000ada03008041000000c002300210000000000112019f0000000c020000292b642b5a0000040f000000600310027000000ada0030019d000200000001035500000001002001900000195d0000613d0000000a0100002900000b290010009c000012660000213d0000000a03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b2201000041000000090300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c0000196a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000019940000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019580000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019650000c13d000012a50000013d0000000a0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a05700029000019830000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b0000197f0000c13d000000000006004b000019900000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000019e30000613d0000001f01400039000000600110018f0000000a0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000a010000290000000001010433000e00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000d00000001001d00000b240100004100000000001004430000000e010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000ae0020000410000000000210435000000440130003900000b4402000041000000000021043500000b2b01000041000000000013043500000004013000390000000d020000290000000000210435000d00000003001d0000002401300039000000000001043500000000010004140000000e02000029000000040020008c000019d70000613d0000000d0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000e020000292b642b5a0000040f000000600310027000000ada0030019d0002000000010355000000010020019000001aae0000613d0000000d0100002900000b290010009c000012660000213d0000000d01000029000000400010043f0000000303000039000000000103041a00000b760110019700000001011001bf000000000013041b000000000100001900002b650001042e0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019ea0000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019f70000c13d000012a50000013d0000000c0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c0570002900001a150000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b00001a110000c13d000000000006004b00001a220000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001a950000613d0000001f01400039000000600110018f0000000c0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000c010000290000000001010433000e00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000d00000001001d00000b240100004100000000001004430000000e010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000080020000390000000000210435000000440130003900000b5f02000041000000000021043500000024013000390000000a02000029000000000021043500000b5e0100004100000000001304350000000401300039000b00000001001d0000000d0200002900000000002104350000000801000029000000000201043300000084013000390000000000210435000c00000003001d000000a401300039000000000002004b00001a670000613d000000000300001900000008040000290000002004400039000800000004001d000000000404043300000000014104360000000103300039000000000023004b00001a5f0000413d00000000020004140000000e03000029000000040030008c00001a7f0000613d0000000c03000029000000000131004900000ada0010009c00000ada01008041000000600110021000000ada0030009c00000ada030080410000004003300210000000000131019f00000ada0020009c00000ada02008041000000c002200210000000000121019f0000000e020000292b642b5a0000040f000000600310027000000ada0030019d0002000000010355000000010020019000001abb0000613d0000000c0100002900000b290010009c000012660000213d0000000c03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b22010000410000000b0300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c00001ac80000c13d0000000003000031000000200030008c0000002004000039000000000403401900001af20000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001a9c0000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001aa90000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001ab60000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001ac30000c13d000012a50000013d0000000c0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c0570002900001ae10000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b00001add0000c13d000000000006004b00001aee0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001be60000613d0000001f01400039000000600110018f0000000c0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000c010000290000000001010433000d00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000c00000001001d00000b240100004100000000001004430000000d010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000440130003900000b6002000041000000000021043500000024013000390000000a02000029000000000021043500000b2b0100004100000000001304350000000401300039000b00000001001d0000000c020000290000000000210435000000c4010000390000000101100367000000000101043b000e00000003001d0000006402300039000000000012043500000000010004140000000d02000029000000040020008c00001b390000613d0000000e0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000d020000292b642b5a0000040f000000600310027000000ada0030019d0002000000010355000000010020019000001bf20000613d0000000e0100002900000b290010009c000012660000213d0000000e03000029000000400030043f0000000101000039000000000201041a00000b2101000041000000000013043500000b22010000410000000b0300002900000000001304350000000001000414000000080220027000000add02200197000000040020008c00001bff0000c13d0000000003000031000000200030008c0000002004000039000000000403401900001c290000013d000027100310011a00000ada0020009c00000ada02008041000000c00120021000000b4a011001c7000080090200003900000000050000192b642b5a0000040f00080001002001930002000000010355000000600110027000000ada0010019d00000ada01100197000000000001004b00001bbd0000c13d000000080000006b00001b670000c13d000000400100043d000000440210003900000b5103000041000000000032043500000024021000390000001703000039000012c20000013d0000000002000416000000030020006c00001b8a0000613d00000000010004140000000002000411000000040020008c00001b710000c13d0000000102000039000000000100003100001b7f0000013d00000ada0010009c00000ada01008041000000c00110021000000b4a011001c700008009020000390000000203000029000000000400041100000000050000192b642b5a0000040f000000010220018f0002000000010355000000600110027000000ada0010019d00000ada01100197000000000001004b00001b940000c13d000000000002004b00001b8a0000c13d000000400100043d000000440210003900000b5203000041000000000032043500000024021000390000000d03000039000012c20000013d0000000101000039000000000010041b000000400100043d0000000e02000029000000000021043500000ada0010009c00000ada01008041000000400110021000000b20011001c700002b650001042e00000b290010009c000012660000213d0000001f0410003900000b75044001970000003f0440003900000b7505400197000000400400043d0000000005540019000000000045004b0000000006000039000000010600403900000b290050009c000012660000213d0000000100600190000012660000c13d000000400050043f000000000614043600000b75031001980000001f0410018f0000000001360019000000020500036700001baf0000613d000000000705034f000000007807043c0000000006860436000000000016004b00001bab0000c13d000000000004004b00001b810000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500001b810000013d00000b290010009c000012660000213d0000001f0310003900000b75033001970000003f0330003900000b7504300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000b290040009c000012660000213d0000000100500190000012660000c13d000000400040043f000000000513043600000b75021001980000001f0310018f0000000001250019000000020400036700001bd80000613d000000000604034f000000006706043c0000000005750436000000000015004b00001bd40000c13d000000000003004b00001b5e0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f000000000021043500001b5e0000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bed0000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bfa0000c13d000012a50000013d0000000e0300002900000ada0030009c00000ada03008041000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c72b642b5f0000040f000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000e0570002900001c180000613d000000000801034f0000000e09000029000000008a08043c0000000009a90436000000000059004b00001c140000c13d000000000006004b00001c250000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001c750000613d0000001f01400039000000600110018f0000000e0110002900000b290010009c000012660000213d000000400010043f000000200030008c000000420000413d0000000e010000290000000001010433000e00000001001d00000add0010009c000000420000213d0000000201000039000000000101041a000c00000001001d00000b240100004100000000001004430000000e010000290000000400100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000001c740000613d000000000101043b000000000001004b000000420000613d000000400300043d000000640130003900000009020000290000000000210435000000440130003900000b6102000041000000000021043500000024013000390000000a02000029000000000021043500000b62010000410000000000130435000d00000003001d00000004013000390000000c02000029000000000021043500000000010004140000000e02000029000000040020008c00001c6d0000613d0000000d0200002900000ada0020009c00000ada02008041000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000e020000292b642b5a0000040f000000600310027000000ada0030019d0002000000010355000000010020019000001c810000613d0000000d0100002900000b290010009c000012660000213d0000000d01000029000000400010043f000000000100001900002b650001042e000000000001042f0000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c7c0000c13d000012a50000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000012a50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c890000c13d000012a50000013d0000000043010434000000000132043600000b75063001970000001f0530018f000000000014004b00001ca40000813d000000000006004b00001ca00000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00001c9a0000c13d000000000005004b00001cba0000613d000000000701001900001cb00000013d0000000007610019000000000006004b00001cad0000613d00000000080400190000000009010019000000008a0804340000000009a90436000000000079004b00001ca90000c13d000000000005004b00001cba0000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900000b75023001970000000001210019000000000001042d000000000301001900000000040104330000000001420436000000000004004b00001ccc0000613d00000000020000190000002003300039000000000503043300000000015104360000000102200039000000000042004b00001cc60000413d000000000001042d0000001f0220003900000b75022001970000000001120019000000000021004b0000000002000039000000010200403900000b290010009c00001cd90000213d000000010020019000001cd90000c13d000000400010043f000000000001042d00000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c00001cf20000c13d0000000003000031000000200030008c0000002004000039000000000403401900001d200000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001d0e0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001d0a0000c13d000000000006004b00001d1b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001d810000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c00001d7b0000213d000000010020019000001d7b0000c13d0000004000b0043f0000001f0030008c00001d790000a13d00000000020c043300000add0020009c00001d790000213d0000000204000039000000000404041a0000004405b0003900000b610600004100000000006504350000002405b00039000000000015043500000b3a0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00001d6c0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001d590000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001d550000c13d000000000006004b00001d660000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001d9f0000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c00001d7b0000213d000000400010043f000000200030008c00001d790000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00001d790000c13d000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d000000000462001900001d8c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001d880000c13d000000000005004b00001d990000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d000000000462001900001daa0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001da60000c13d000000000005004b00001db70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c00001dd00000c13d0000000003000031000000200030008c0000002004000039000000000403401900001dfe0000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001dec0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001de80000c13d000000000006004b00001df90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001e5c0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c00001e560000213d000000010020019000001e560000c13d0000004000b0043f0000001f0030008c00001e540000a13d00000000020c043300000add0020009c00001e540000213d0000000204000039000000000404041a0000004405b0003900000b270600004100000000006504350000002405b00039000000000015043500000b3c0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00001e4a0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001e370000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001e330000c13d000000000006004b00001e440000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001e7a0000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c00001e560000213d000000400010043f000000200030008c00001e540000413d00000000010b043300000add0010009c00001e540000213d000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d000000000462001900001e670000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e630000c13d000000000005004b00001e740000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d000000000462001900001e850000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e810000c13d000000000005004b00001e920000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000010000000000020000000101000039000000000201041a000000ff0120019000001ee90000c13d000000400b00043d00000b460100004100000000001b04350000000001000414000000080220027000000add02200197000000040020008c00001eaa0000c13d0000000003000031000000200030008c0000002004000039000000000403401900001ed60000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b1d011001c700010000000b001d2b642b5f0000040f000000010b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001ec50000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001ec10000c13d000000000006004b00001ed20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000001ef20000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c00001eec0000213d000000010020019000001eec0000c13d000000400010043f0000001f0030008c00001eea0000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00001eea0000c13d000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d000000000462001900001efd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001ef90000c13d000000000005004b00001f0a0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b66000104300003000000000002000300000001001d0000000101000039000000000201041a000000400c00043d00000b210100004100000000001c04350000000401c0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c00001f240000c13d0000000003000031000000200030008c0000002004000039000000000403401900001f500000013d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001f3f0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001f3b0000c13d000000000006004b00001f4c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000020e90000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000b2900b0009c000020e20000213d0000000100200190000020e20000c13d0000004000b0043f0000001f0030008c000020e00000a13d00000000020c043300000add0020009c000020e00000213d0000000204000039000000000404041a0000004405b0003900000b770600004100000000006504350000002405b000390000000306000029000000000065043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00001f9d0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900001f8a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00001f860000c13d000000000006004b00001f970000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000020f50000613d0000001f01400039000000600110018f000000000cb1001900000b2900c0009c000020e20000213d0000004000c0043f000000200030008c000020e00000413d00000000020b0433000200000002001d0000000102000039000000000202041a00000b210400004100000000004c04350000000404c0003900000b220500004100000000005404350000000004000414000000080220027000000add02200197000000040020008c00001fdf0000613d00000ada00c0009c00000ada0100004100000000010c4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b23011001c700010000000c001d2b642b5f0000040f000000010c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900001fcc0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00001fc80000c13d000000000006004b00001fd90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000021010000613d0000001f01400039000000600110018f000000000bc1001900000b2900b0009c000020e20000213d0000004000b0043f000000200030008c000020e00000413d00000000020c043300000add0020009c000020e00000213d0000000204000039000000000404041a0000004405b0003900000b780600004100000000006504350000002405b000390000000306000029000000000065043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000020250000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700010000000b001d2b642b5f0000040f000000010b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000020120000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000200e0000c13d000000000006004b0000201f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000210d0000613d0000001f01400039000000600110018f0000000001b1001900000b290010009c000020e20000213d000000400010043f000000200030008c000020e00000413d00000000020b0433000100000002001d000000020020002a000021430000413d00000b79010000410000000000100443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b7a011001c70000800b020000392b642b5f0000040f0000000100200190000020e80000613d000000000101043b0000000202000029000000000021004b000020540000413d0000000102200029000000000021004b0000000001000019000020de0000213d0000000101000039000000000201041a000000400c00043d00000b210100004100000000001c04350000000401c0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c000020560000c13d0000000003000031000000200030008c00000020040000390000000004034019000020820000013d000000010100018f000000000001042d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000020710000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000206d0000c13d000000000006004b0000207e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000021190000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000b2900b0009c000020e20000213d0000000100200190000020e20000c13d0000004000b0043f000000200030008c000020e00000413d00000000020c043300000add0020009c000020e00000213d0000000204000039000000000404041a0000004405b0003900000b6d0600004100000000006504350000002405b000390000000306000029000000000065043500000b3a0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000020cf0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700030000000b001d2b642b5f0000040f000000030b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000020bc0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000020b80000c13d000000000006004b000020c90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000021250000613d0000001f01400039000000600110018f0000000001b1001900000b290010009c000020e20000213d000000400010043f000000200030008c000020e00000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000020e00000c13d000000000001004b00000000010000390000000101006039000000010110018f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020f00000c13d000021300000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020fc0000c13d000021300000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021080000c13d000021300000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021140000c13d000021300000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021200000c13d000021300000013d0000001f0530018f00000adc06300198000000400200043d0000000004620019000021300000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000212c0000c13d000000000005004b0000213d0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000000b4e01000041000000000010043f0000001101000039000000040010043f00000b230100004100002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c0000215c0000c13d0000000003000031000000200030008c000000200400003900000000040340190000218a0000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000021780000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000021740000c13d000000000006004b000021850000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000021e60000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c000021e00000213d0000000100200190000021e00000c13d0000004000b0043f0000001f0030008c000021de0000a13d00000000020c043300000add0020009c000021de0000213d0000000204000039000000000404041a0000004405b0003900000b600600004100000000006504350000002405b00039000000000015043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000021d60000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000021c30000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000021bf0000c13d000000000006004b000021d00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000022040000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c000021e00000213d000000400010043f000000200030008c000021de0000413d00000000010b0433000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000021f10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021ed0000c13d000000000005004b000021fe0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d00000000046200190000220f0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000220b0000c13d000000000005004b0000221c0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c000022350000c13d0000000003000031000000200030008c00000020040000390000000004034019000022630000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000022510000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000224d0000c13d000000000006004b0000225e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000022bf0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c000022b90000213d0000000100200190000022b90000c13d0000004000b0043f0000001f0030008c000022b70000a13d00000000020c043300000add0020009c000022b70000213d0000000204000039000000000404041a0000004405b0003900000b7b0600004100000000006504350000002405b00039000000000015043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000022af0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000229c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000022980000c13d000000000006004b000022a90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000022dd0000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c000022b90000213d000000400010043f000000200030008c000022b70000413d00000000010b0433000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000022ca0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000022c60000c13d000000000005004b000022d70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000022e80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000022e40000c13d000000000005004b000022f50000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c0000230e0000c13d0000000003000031000000200030008c000000200400003900000000040340190000233c0000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000232a0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000023260000c13d000000000006004b000023370000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000023980000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c000023920000213d0000000100200190000023920000c13d0000004000b0043f0000001f0030008c000023900000a13d00000000020c043300000add0020009c000023900000213d0000000204000039000000000404041a0000004405b0003900000b2a0600004100000000006504350000002405b00039000000000015043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000023880000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000023750000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000023710000c13d000000000006004b000023820000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000023b60000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c000023920000213d000000400010043f000000200030008c000023900000413d00000000010b0433000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000023a30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000239f0000c13d000000000005004b000023b00000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000023c10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023bd0000c13d000000000005004b000023ce0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c000023e70000c13d0000000003000031000000200030008c00000020040000390000000004034019000024150000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000024030000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000023ff0000c13d000000000006004b000024100000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000024710000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c0000246b0000213d00000001002001900000246b0000c13d0000004000b0043f0000001f0030008c000024690000a13d00000000020c043300000add0020009c000024690000213d0000000204000039000000000404041a0000004405b0003900000b7c0600004100000000006504350000002405b00039000000000015043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000024610000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000244e0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000244a0000c13d000000000006004b0000245b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000248f0000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c0000246b0000213d000000400010043f000000200030008c000024690000413d00000000010b0433000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d00000000046200190000247c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000024780000c13d000000000005004b000024890000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d00000000046200190000249a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000024960000c13d000000000005004b000024a70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400c00043d00000b210300004100000000003c04350000000404c0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c000024c00000c13d0000000003000031000000200030008c00000020040000390000000004034019000024ee0000013d000100000001001d00000ada00c0009c00000ada0300004100000000030c4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000c001d2b642b5f0000040f000000020c000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000024dc0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000024d80000c13d000000000006004b000024e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000254a0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000b2900b0009c000025440000213d0000000100200190000025440000c13d0000004000b0043f0000001f0030008c000025420000a13d00000000020c043300000add0020009c000025420000213d0000000204000039000000000404041a0000004405b0003900000b7d0600004100000000006504350000002405b00039000000000015043500000b3d0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000253a0000613d00000ada00b0009c00000ada0100004100000000010b4019000000400110021000000ada0040009c00000ada04008041000000c003400210000000000113019f00000b31011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000025270000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025230000c13d000000000006004b000025340000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000025680000613d0000001f01400039000000600710018f0000000001b7001900000b290010009c000025440000213d000000400010043f000000200030008c000025420000413d00000000010b0433000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000025550000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025510000c13d000000000005004b000025620000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000025730000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000256f0000c13d000000000005004b000025800000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400b00043d00000b210300004100000000003b04350000000404b0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c000025990000c13d0000000003000031000000200030008c00000020040000390000000004034019000025c70000013d000100000001001d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000025b50000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025b10000c13d000000000006004b000025c20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000026510000613d00000001010000290000001f02400039000000600220018f000000000ab2001900000000002a004b0000000002000039000000010200403900000b2900a0009c0000264b0000213d00000001002001900000264b0000c13d0000004000a0043f0000001f0030008c000026490000a13d00000000020b043300000add0020009c000026490000213d0000000204000039000000000604041a0000004404a0003900000b5d0500004100000000005404350000002404a00039000000000014043500000b380400004100000000004a04350000000404a0003900000000006404350000000001000414000000040020008c000025e70000c13d0000000201000367000025f90000013d00000ada00a0009c00020000000a001d00000ada0300004100000000030a4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada03300197000200000001035500000001002001900000266f0000613d000000020a00002900000b75053001980000001f0630018f00000000045a0019000026030000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000025ff0000c13d000000000006004b000026100000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75021001970000000001a20019000000000021004b0000000002000039000000010200403900000b290010009c0000264b0000213d00000001002001900000264b0000c13d000000400010043f00000b320030009c000026490000213d000000200030008c000026490000413d00000000020a043300000b290020009c000026490000213d0000000003a300190000000002a200190000001f04200039000000000034004b000000000500001900000b330500804100000b330440019700000b3306300197000000000764013f000000000064004b000000000400001900000b330400404100000b330070009c000000000405c019000000000004004b000026490000c13d000000002502043400000b290050009c0000264b0000213d00000005045002100000003f0640003900000b3906600197000000000616001900000b290060009c0000264b0000213d000000400060043f00000000005104350000000004240019000000000034004b000026490000213d000000000005004b000026480000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b000026430000413d000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d00000000046200190000265c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000026580000c13d000000000005004b000026690000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d00000000046200190000267a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000026760000c13d000000000005004b000026870000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b660001043000020000000000020000000102000039000000000202041a000000400b00043d00000b210300004100000000003b04350000000404b0003900000b220300004100000000003404350000000004000414000000080220027000000add02200197000000040020008c000026a00000c13d0000000003000031000000200030008c00000020040000390000000004034019000026ce0000013d000100000001001d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0040009c00000ada04008041000000c001400210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000026bc0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000026b80000c13d000000000006004b000026c90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000027580000613d00000001010000290000001f02400039000000600220018f000000000ab2001900000000002a004b0000000002000039000000010200403900000b2900a0009c000027520000213d0000000100200190000027520000c13d0000004000a0043f0000001f0030008c000027500000a13d00000000020b043300000add0020009c000027500000213d0000000204000039000000000604041a0000004404a0003900000b5f0500004100000000005404350000002404a00039000000000014043500000b380400004100000000004a04350000000404a0003900000000006404350000000001000414000000040020008c000026ee0000c13d0000000201000367000027000000013d00000ada00a0009c00020000000a001d00000ada0300004100000000030a4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b31011001c72b642b5f0000040f000000600310027000000ada0030019d00000ada0330019700020000000103550000000100200190000027760000613d000000020a00002900000b75053001980000001f0630018f00000000045a00190000270a0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000027060000c13d000000000006004b000027170000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900000b75021001970000000001a20019000000000021004b0000000002000039000000010200403900000b290010009c000027520000213d0000000100200190000027520000c13d000000400010043f00000b320030009c000027500000213d000000200030008c000027500000413d00000000020a043300000b290020009c000027500000213d0000000003a300190000000002a200190000001f04200039000000000034004b000000000500001900000b330500804100000b330440019700000b3306300197000000000764013f000000000064004b000000000400001900000b330400404100000b330070009c000000000405c019000000000004004b000027500000c13d000000002502043400000b290050009c000027520000213d00000005045002100000003f0640003900000b3906600197000000000616001900000b290060009c000027520000213d000000400060043f00000000005104350000000004240019000000000034004b000027500000213d000000000005004b0000274f0000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b0000274a0000413d000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000027630000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000275f0000c13d000000000005004b000027700000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300000001f0530018f00000adc06300198000000400200043d0000000004620019000027810000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000277d0000c13d000000000005004b0000278e0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000121019f00002b66000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000b210100004100000000001b04350000000401b0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c000027a90000c13d0000000003000031000000200030008c00000020040000390000000004034019000027d50000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000027c40000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000027c00000c13d000000000006004b000027d10000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f000200000001035500000001002001900000282a0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c000028230000213d0000000100200190000028230000c13d000000400010043f0000001f0030008c000028210000a13d00000000020b043300000add0020009c000028210000213d0000000201000039000000000101041a000100000001001d00000b24010000410000000000100443000200000002001d0000000400200443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f0000000100200190000028290000613d000000000101043b000000000001004b0000000203000029000028210000613d000000400400043d000000640140003900000003020000290000000000210435000000440140003900000b7c02000041000000000021043500000024014000390000000402000029000000000021043500000b2b0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c0000281d0000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000002030019000400000004001d2b642b5a0000040f0000000404000029000000600310027000000ada0030019d00020000000103550000000100200190000028360000613d00000b290040009c000028230000213d000000400040043f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d0000000004620019000028420000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028310000c13d000028420000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000028420000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000283e0000c13d000000000005004b0000284f0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000b210100004100000000001b04350000000401b0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c0000286a0000c13d0000000003000031000000200030008c00000020040000390000000004034019000028960000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000028850000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000028810000c13d000000000006004b000028920000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000028eb0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c000028e40000213d0000000100200190000028e40000c13d000000400010043f0000001f0030008c000028e20000a13d00000000020b043300000add0020009c000028e20000213d0000000201000039000000000101041a000100000001001d00000b24010000410000000000100443000200000002001d0000000400200443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f0000000100200190000028ea0000613d000000000101043b000000000001004b0000000203000029000028e20000613d000000400400043d000000640140003900000003020000290000000000210435000000440140003900000b7d02000041000000000021043500000024014000390000000402000029000000000021043500000b2b0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c000028de0000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000002030019000400000004001d2b642b5a0000040f0000000404000029000000600310027000000ada0030019d00020000000103550000000100200190000028f70000613d00000b290040009c000028e40000213d000000400040043f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d0000000004620019000029030000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028f20000c13d000029030000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000029030000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028ff0000c13d000000000005004b000029100000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000b210100004100000000001b04350000000401b0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c0000292b0000c13d0000000003000031000000200030008c00000020040000390000000004034019000029570000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000029460000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000029420000c13d000000000006004b000029530000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f00020000000103550000000100200190000029ac0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c000029a50000213d0000000100200190000029a50000c13d000000400010043f0000001f0030008c000029a30000a13d00000000020b043300000add0020009c000029a30000213d0000000201000039000000000101041a000100000001001d00000b24010000410000000000100443000200000002001d0000000400200443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f0000000100200190000029ab0000613d000000000101043b000000000001004b0000000203000029000029a30000613d000000400400043d000000640140003900000003020000290000000000210435000000440140003900000b7702000041000000000021043500000024014000390000000402000029000000000021043500000b2b0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c0000299f0000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000002030019000400000004001d2b642b5a0000040f0000000404000029000000600310027000000ada0030019d00020000000103550000000100200190000029b80000613d00000b290040009c000029a50000213d000000400040043f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d0000000004620019000029c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000029b30000c13d000029c40000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d0000000004620019000029c40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000029c00000c13d000000000005004b000029d10000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000b210100004100000000001b04350000000401b0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c000029ec0000c13d0000000003000031000000200030008c0000002004000039000000000403401900002a180000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002a070000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002a030000c13d000000000006004b00002a140000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000002a6d0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c00002a660000213d000000010020019000002a660000c13d000000400010043f0000001f0030008c00002a640000a13d00000000020b043300000add0020009c00002a640000213d0000000201000039000000000101041a000100000001001d00000b24010000410000000000100443000200000002001d0000000400200443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000002a6c0000613d000000000101043b000000000001004b000000020300002900002a640000613d000000400400043d000000640140003900000003020000290000000000210435000000440140003900000b7802000041000000000021043500000024014000390000000402000029000000000021043500000b2b0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00002a600000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000002030019000400000004001d2b642b5a0000040f0000000404000029000000600310027000000ada0030019d0002000000010355000000010020019000002a790000613d00000b290040009c00002a660000213d000000400040043f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d000000000462001900002a850000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a740000c13d00002a850000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d000000000462001900002a850000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a810000c13d000000000005004b00002a920000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b66000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000b210100004100000000001b04350000000401b0003900000b220300004100000000003104350000000001000414000000080220027000000add02200197000000040020008c00002aad0000c13d0000000003000031000000200030008c0000002004000039000000000403401900002ad90000013d00000ada00b0009c00000ada0300004100000000030b4019000000400330021000000ada0010009c00000ada01008041000000c001100210000000000131019f00000b23011001c700020000000b001d2b642b5f0000040f000000020b000029000000600310027000000ada03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002ac80000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002ac40000c13d000000000006004b00002ad50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000000000003001f0002000000010355000000010020019000002b2e0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000b290010009c00002b270000213d000000010020019000002b270000c13d000000400010043f0000001f0030008c00002b250000a13d00000000020b043300000add0020009c00002b250000213d0000000201000039000000000101041a000100000001001d00000b24010000410000000000100443000200000002001d0000000400200443000000000100041400000ada0010009c00000ada01008041000000c00110021000000b25011001c700008002020000392b642b5f0000040f000000010020019000002b2d0000613d000000000101043b000000000001004b000000020300002900002b250000613d000000400400043d000000640140003900000003020000290000000000210435000000440140003900000b7b02000041000000000021043500000024014000390000000402000029000000000021043500000b2b0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00002b210000613d00000ada0040009c00000ada020000410000000002044019000000400220021000000ada0010009c00000ada01008041000000c001100210000000000121019f00000b28011001c70000000002030019000400000004001d2b642b5a0000040f0000000404000029000000600310027000000ada0030019d0002000000010355000000010020019000002b3a0000613d00000b290040009c00002b270000213d000000400040043f000000000001042d000000000100001900002b660001043000000b4e01000041000000000010043f0000004101000039000000040010043f00000b230100004100002b6600010430000000000001042f0000001f0530018f00000adc06300198000000400200043d000000000462001900002b460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b350000c13d00002b460000013d00000ada033001970000001f0530018f00000adc06300198000000400200043d000000000462001900002b460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b420000c13d000000000005004b00002b530000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000ada0020009c00000ada020080410000004002200210000000000112019f00002b6600010430000000000001042f00002b5d002104210000000102000039000000000001042d0000000002000019000000000001042d00002b62002104230000000102000039000000000001042d0000000002000019000000000001042d00002b640000043200002b650001042e00002b6600010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0024d320dd83993c33f09dd0a76efb119982478e38e75fe67993987f63023d4dc900000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000078e30c9000000000000000000000000000000000000000000000000000000000b353784c00000000000000000000000000000000000000000000000000000000ce62bc8b00000000000000000000000000000000000000000000000000000000d6077fbe00000000000000000000000000000000000000000000000000000000d6077fbf00000000000000000000000000000000000000000000000000000000dd898b2f00000000000000000000000000000000000000000000000000000000ed022ebd00000000000000000000000000000000000000000000000000000000ce62bc8c00000000000000000000000000000000000000000000000000000000d33b532800000000000000000000000000000000000000000000000000000000bb5adc6000000000000000000000000000000000000000000000000000000000bb5adc6100000000000000000000000000000000000000000000000000000000c03ad0be00000000000000000000000000000000000000000000000000000000c460494300000000000000000000000000000000000000000000000000000000b353784d00000000000000000000000000000000000000000000000000000000b76ac0d70000000000000000000000000000000000000000000000000000000088e4f1ca000000000000000000000000000000000000000000000000000000008de4226e000000000000000000000000000000000000000000000000000000008de4226f00000000000000000000000000000000000000000000000000000000a16ad7da00000000000000000000000000000000000000000000000000000000a485b4cf0000000000000000000000000000000000000000000000000000000088e4f1cb000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008245e471000000000000000000000000000000000000000000000000000000008245e4720000000000000000000000000000000000000000000000000000000082840eed0000000000000000000000000000000000000000000000000000000078e30c91000000000000000000000000000000000000000000000000000000008129fc1c00000000000000000000000000000000000000000000000000000000305a67a7000000000000000000000000000000000000000000000000000000005f9e366d0000000000000000000000000000000000000000000000000000000070876c970000000000000000000000000000000000000000000000000000000070876c980000000000000000000000000000000000000000000000000000000071b6222a0000000000000000000000000000000000000000000000000000000077278ae8000000000000000000000000000000000000000000000000000000005f9e366e000000000000000000000000000000000000000000000000000000006c4d3ecf000000000000000000000000000000000000000000000000000000003ccfd60a000000000000000000000000000000000000000000000000000000003ccfd60b000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000005d1ca63100000000000000000000000000000000000000000000000000000000305a67a80000000000000000000000000000000000000000000000000000000030e111d3000000000000000000000000000000000000000000000000000000001328357e0000000000000000000000000000000000000000000000000000000016c38b3b0000000000000000000000000000000000000000000000000000000016c38b3c00000000000000000000000000000000000000000000000000000000267659e2000000000000000000000000000000000000000000000000000000002fb0b874000000000000000000000000000000000000000000000000000000001328357f0000000000000000000000000000000000000000000000000000000015be71ff0000000000000000000000000000000000000000000000000000000006fdde020000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000007563ded000000000000000000000000000000000000000000000000000000000035a9ae0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000020000000800000000000000000c36dd7ea00000000000000000000000000000000000000000000000000000000241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b080000000000000000000000000000000000000044000000800000000000000000ffffffffffffffffffffff0000000000000000000000000000000000000000ffa4b914810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000161a64a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000002000000000000000000000000053e41c1e000000000000000000000000000000000000000000000000000000009750ad73d9615445751d3fd0a61d867ae6a6dd1dfb5f65ef07fe835b7d5ca6bd00000000000000000000000000000000000000240000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000000a41b90f0000000000000000000000000000000000000000000000000000000002016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c00000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff63e9075eadb2b714ec44137cb04a5fdb7680cc60891886d396f63cb0dbafbc9e9b29de690000000000000000000000000000000000000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000496d706f727420616d6f756e74206d757374206265206c657373207468616e206f7220657175616c20746f20313030303000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000008a4bcc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000000000000005072696365206d7573742062652067726561746572207468616e20300000000007fef633000000000000000000000000000000000000000000000000000000006d6500000000000000000000000000000000000000000000000000000000000053746172742074696d65206d757374206265206265666f726520656e64207469bfa2ccd2000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0651689700000000000000000000000000000000000000000000000000000000007b920aa00000000000000000000000000000000000000000000000000000000e81b22ea00000000000000000000000000000000000000000000000000000000a1b9224c00000000000000000000000000000000000000000000000000000000fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c56656e646f7253797374656d00000000000000000000000000000000000000000dc149f000000000000000000000000000000000000000000000000000000000421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b2361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60e95c048700000000000000000000000000000000000000000000000000000000a709fd3aa96d9faf770e44a5aef2f4808a6fe3a5ddf546568f36ad3a3873f31d537570706c79206d7573742062652067726561746572207468616e20300000005c975abb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000005061757361626c653a2070617573656400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f02000000000000000000000000000000000000000000000000000000000000005fc998f6f1112087a6a7f978c03b3ef6c1298970e0970ce1bba412cafeba982bcd90c4c1000000000000000000000000000000000000000000000000000000007d103faedbb691921e5295cae984a2aec41f6d66a9f4a487e2cc8145e778a08b4e487b710000000000000000000000000000000000000000000000000000000086211d4b00000000000000000000000000000000000000000000000000000000326d994cdb81aaccb84aa1f62bae636dc0aaf98ab22f66b0c9224f1edccd7cc9526f79616c7479207472616e73666572206661696c6564000000000000000000526566756e64206661696c656400000000000000000000000000000000000000506c61796572206e6f74206a7569636564000000000000000000000000000000506c61796572206c696d69742072656163686564000000000000000000000000496e73756666696369656e7420737570706c79000000000000000000000000004c697374696e67206e6f74206163746976650000000000000000000000000000496e73756666696369656e74207061796d656e740000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f68652073616d65206c656e6774680000000000000000000000000000000000004974656d2049447320616e6420616d6f756e7473206d7573742068617665207450fc4a86286314eb3aa17200f6e9ba0d1cda18b0acbfb54e6d9dd307e46c2d28ad46d35900000000000000000000000000000000000000000000000000000000fa75861a3823dd5286f0891f7ddce6cb62e6deee6aa355ff0e641afd829dbdcdea06f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a0912dd6753d7447d2bb3cd72464154a7bc06c4a5d5747f9553d5247b4dc12c2e777f2c071ca00000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000053746172742074696d65206d7573742062652067726561746572207468616e204c697374696e67204944206d7573742062652067726561746572207468616e2068616e2030000000000000000000000000000000000000000000000000000000507269636520706572206974656d206d757374206265206772656174657220746e20300000000000000000000000000000000000000000000000000000000000546f74616c20737570706c79206d7573742062652067726561746572207468614974656d20494473206d7573742062652067726561746572207468616e2030009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f395472616e73666572206661696c6564000000000000000000000000000000000058d3147cb7cba8a57e7a7f6021ee129c5f39c5292213d70eff79c1ffd11d6f3865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a020000000000000000000000000000000000002000000000000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2585db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f742070617573656400000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a700000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff004ebf727c48eac2c66272456b06a885c5cc03e54d140f63b63b6fd10c1227958ee304a5c70fd9a92a756a98ab89d05a9d1ea7d24975986fd7971033be6405d6b0796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000007ec44d5489e2b86ed2f87d84b04b5a3949fba967937842e10302a5545dfc63150ecd9e25c81c684765cec4b6e84c99a71427b6f86b89fb7723e47f99327ee5727e61c209e219816f2d6552de7fdbac392549e401c2ca89cd18a229b82bce31a21d705a70ba08b6c255110cb2d774414129cfb6fe9a22e37df0c6042a3f7420b8
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
-----Decoded View---------------
Arg [0] : gameRegistryAddress (address): 0x74eb92b33f2400EB14F6D6725B14F76078d5E731
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$208.75
Net Worth in ETH
0.07098
Token Allocations
ETH
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ABSTRACT | 100.00% | $2,940.17 | 0.071 | $208.75 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.