ETH Price: $1,947.87 (-1.55%)

Contract

0xcF10c82EB03ceAb0b6D146D87f36e3fF4e44ce39
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Register Forge P...104485672020-07-13 2:40:432064 days ago1594608043IN
0xcF10c82E...F4e44ce39
0 ETH0.0093744337
Unregister Forge...104485652020-07-13 2:39:582064 days ago1594607998IN
0xcF10c82E...F4e44ce39
0 ETH0.0023851337
Register Forge P...104484752020-07-13 2:21:322064 days ago1594606892IN
0xcF10c82E...F4e44ce39
0 ETH0.0093748737
Register Forge P...104484562020-07-13 2:17:482064 days ago1594606668IN
0xcF10c82E...F4e44ce39
0 ETH0.0093744337
Unregister Forge...104484312020-07-13 2:11:522064 days ago1594606312IN
0xcF10c82E...F4e44ce39
0 ETH0.0022564135
Unregister Forge...104484162020-07-13 2:08:302064 days ago1594606110IN
0xcF10c82E...F4e44ce39
0 ETH0.002256235
Register Forge P...102735582020-06-16 0:20:132091 days ago1592266813IN
0xcF10c82E...F4e44ce39
0 ETH0.0070954530
Register Forge P...102735482020-06-16 0:17:272091 days ago1592266647IN
0xcF10c82E...F4e44ce39
0 ETH0.0070929330
Register Forge P...102735282020-06-16 0:12:232091 days ago1592266343IN
0xcF10c82E...F4e44ce39
0 ETH0.0071710830
Register Forge P...102735202020-06-16 0:10:452091 days ago1592266245IN
0xcF10c82E...F4e44ce39
0 ETH0.0071728830
Register Forge P...102735092020-06-16 0:09:262091 days ago1592266166IN
0xcF10c82E...F4e44ce39
0 ETH0.0071732430
Register Forge P...102734992020-06-16 0:07:272091 days ago1592266047IN
0xcF10c82E...F4e44ce39
0 ETH0.0071764830
Register Forge P...102734942020-06-16 0:06:082091 days ago1592265968IN
0xcF10c82E...F4e44ce39
0 ETH0.0071750430
Register Forge P...102734832020-06-16 0:04:112091 days ago1592265851IN
0xcF10c82E...F4e44ce39
0 ETH0.0071768430
Register Forge P...102734752020-06-16 0:01:552091 days ago1592265715IN
0xcF10c82E...F4e44ce39
0 ETH0.0071743230
Register Forge P...102734602020-06-15 23:58:452091 days ago1592265525IN
0xcF10c82E...F4e44ce39
0 ETH0.0077492430
Register Forge P...102734412020-06-15 23:54:482091 days ago1592265288IN
0xcF10c82E...F4e44ce39
0 ETH0.0076957230
Register Forge P...102734162020-06-15 23:49:012091 days ago1592264941IN
0xcF10c82E...F4e44ce39
0 ETH0.0084672733
Register Forge P...102733962020-06-15 23:46:122091 days ago1592264772IN
0xcF10c82E...F4e44ce39
0 ETH0.0084676633
Register Forge P...102733822020-06-15 23:43:012091 days ago1592264581IN
0xcF10c82E...F4e44ce39
0 ETH0.0084712333
Register Forge P...102733742020-06-15 23:40:022091 days ago1592264402IN
0xcF10c82E...F4e44ce39
0 ETH0.0084696433
Register Forge P...102733482020-06-15 23:34:482091 days ago1592264088IN
0xcF10c82E...F4e44ce39
0 ETH0.0084716233
Register Forge P...102733302020-06-15 23:30:312091 days ago1592263831IN
0xcF10c82E...F4e44ce39
0 ETH0.0084688533
Register Forge P...102733122020-06-15 23:26:252091 days ago1592263585IN
0xcF10c82E...F4e44ce39
0 ETH0.0084676633
Register Forge P...102732872020-06-15 23:21:562091 days ago1592263316IN
0xcF10c82E...F4e44ce39
0 ETH0.0084668733
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ForgePathCatalogCombined

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-03-04
*/

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * > Note: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/ERC721/el/forging/ForgePathCatalog.sol

pragma solidity 0.5.0;


contract ForgePathCatalog is Ownable {    

    // Forge Types
    // 1 - EL Gen 1 Token + EL Gen 1 Token = EL Gen 1 Token
    // 2 - ERC721 Address + ERC721 Address = EL Gen 1 Token
    // 3 - ERC721 Address + EL Gen 1 Token = EL Gen 1 Token
    // 4 - ERC1155 Token + ERC1155 Token = EL Gen 1 Token
    // 5 - ERC1155 Token + EL Gen 1 Token = EL Gen 1 Token
    // 6 - ERC1155 Token + ERC721 Address = EL Gen 1 Token

    struct ForgePathDataCommon {
      uint8 forgeType;
      uint256 weiCost;
      uint256 elementeumCost;
      uint256 forgedItem;
    }

    uint256 private nextForgePathIndex = 0;
    string[] public forgePathNames;
    mapping (uint256 => uint256) private forgePathIndexMap;
    mapping (string => uint256) private forgePathNameIdMap;    
    mapping (uint256 => string) private forgePathIdNameMap;    

    mapping (uint256 => ForgePathDataCommon) internal forgePathMapCommon;

    constructor() public 
      Ownable()
    {      
    }    

    function() external payable {
        revert("Fallback function is not permitted.");
    }

    function destroyContract() external {
        _requireOnlyOwner();
        address payable payableOwner = address(uint160(owner()));
        selfdestruct(payableOwner);
    }

    function hasPathDefinitionByName(string calldata pathName) external view returns (bool) {
        return _hasPathDefinitionByName(pathName);
    }

    function hasPathDefinition(uint256 pathId) external view returns (bool) {
        return _hasPathDefinition(pathId);
    }

    function getNumberOfPathDefinitions() external view returns (uint256) {
        return forgePathNames.length;
    }        

    function getForgePathId(string memory pathName) public view returns (uint256) {
      require(_hasPathDefinitionByName(pathName), "path not defined");
      return forgePathNameIdMap[pathName];
    }

    function getForgePathNameAtIndex(uint256 index) external view returns (string memory) {
      require(index < forgePathNames.length, "Index Out Of Range");
      string memory pathName = forgePathNames[index]; 
      require(_hasPathDefinitionByName(pathName), "path not defined");
      return pathName;
    }

    function getForgePathIdAtIndex(uint256 index) external view returns (uint256) {
      require(index < forgePathNames.length, "Index Out Of Range");
      string memory pathName = forgePathNames[index]; 
      require(_hasPathDefinitionByName(pathName), "path not defined");
      return forgePathNameIdMap[pathName];
    }    

    function getForgeType(uint256 pathId) external view returns (uint8) {
      return _getForgeType(pathId);
    }    

    function getForgePathDetailsCommon(uint256 pathId) external view returns (uint256, uint256, uint256) {
      ForgePathDataCommon memory forgePathDataCommon = _getForgePathDataCommon(pathId);
      return 
      (
        forgePathDataCommon.weiCost,
        forgePathDataCommon.elementeumCost,
        forgePathDataCommon.forgedItem
      );
    }

    function _hasPathDefinitionByName(string memory pathName) internal view returns (bool) {
        return forgePathNameIdMap[pathName] != 0;
    }

    function _hasPathDefinition(uint256 pathId) internal view returns (bool) {
        bytes memory tempEmptyStringTest = bytes(forgePathIdNameMap[pathId]);
        return tempEmptyStringTest.length != 0;
    }

    function _getForgePathNameAtIndex(uint256 pathIndex) internal view returns (string memory) {
        return forgePathNames[pathIndex];
    }

    function _getForgeType(uint256 pathId) internal view returns (uint8) {
      require(_hasPathDefinition(pathId), "path not defined");
      return forgePathMapCommon[pathId].forgeType;
    }

    function registerForgePathCommon(string memory pathName, uint8 forgeType, uint256 weiCost, uint256 elementeumCost, uint256 forgedItem) internal {
        _requireOnlyOwner();
        require(!_hasPathDefinitionByName(pathName), "path already defined");
        require(bytes(pathName).length < 32, "path name may not exceed 31 characters");

        nextForgePathIndex++;
        forgePathIndexMap[nextForgePathIndex] = forgePathNames.length;
        forgePathNameIdMap[pathName] = nextForgePathIndex;
        forgePathIdNameMap[nextForgePathIndex] = pathName;
        forgePathNames.push(pathName);

        forgePathMapCommon[nextForgePathIndex].forgeType = forgeType;
        forgePathMapCommon[nextForgePathIndex].weiCost = weiCost;
        forgePathMapCommon[nextForgePathIndex].elementeumCost = elementeumCost;
        forgePathMapCommon[nextForgePathIndex].forgedItem = forgedItem;
    }

    function unregisterForgePathCommon(string memory pathName) internal {
        _requireOnlyOwner();
        require(_hasPathDefinitionByName(pathName), "path not defined");

        uint256 pathId = forgePathNameIdMap[pathName];      
        uint256 pathIndex = forgePathIndexMap[pathId];

        delete forgePathIndexMap[pathId];
        delete forgePathNameIdMap[pathName];
        delete forgePathIdNameMap[pathId];
        delete forgePathMapCommon[pathId];

        string memory tmp = _getForgePathNameAtIndex(pathIndex);      
        string memory priorLastPathName = _getForgePathNameAtIndex(forgePathNames.length - 1);
        uint256 priorLastPathId = forgePathNameIdMap[priorLastPathName];      
        forgePathNames[pathIndex] = forgePathNames[forgePathNames.length - 1];
        forgePathNames[forgePathNames.length - 1] = tmp;
        forgePathIndexMap[priorLastPathId] = pathIndex;
        delete forgePathNames[forgePathNames.length - 1];
        forgePathNames.length--;     
    }                

    function _getForgePathDataCommon(uint256 pathId) internal view returns (ForgePathDataCommon memory) {
      require(_hasPathDefinition(pathId), "path not defined");
      return forgePathMapCommon[pathId];
    }

    function _requireOnlyOwner() internal view {
      require(isOwner(), "Ownable: caller is not the owner");
    }
}

// File: contracts/ERC721/el/forging/IForgePathCatalogCombined.sol

pragma solidity 0.5.0;

interface IForgePathCatalogCombined {        
    function getNumberOfPathDefinitions() external view returns (uint256);
    function getForgePathNameAtIndex(uint256 index) external view returns (string memory);
    function getForgePathIdAtIndex(uint256 index) external view returns (uint256);

    function getForgeType(uint256 pathId) external view returns (uint8);
    function getForgePathDetailsCommon(uint256 pathId) external view returns (uint256, uint256, uint256);
    function getForgePathDetailsTwoGen1Tokens(uint256 pathId) external view returns (uint256, uint256, bool, bool);
    function getForgePathDetailsTwoERC721Addresses(uint256 pathId) external view returns (address, address);
    function getForgePathDetailsERC721AddressWithGen1Token(uint256 pathId) external view returns (address, uint256, bool);
    function getForgePathDetailsTwoERC1155Tokens(uint256 pathId) external view returns (uint256, uint256, bool, bool, bool, bool);
    function getForgePathDetailsERC1155WithGen1Token(uint256 pathId) external view returns (uint256, uint256, bool, bool, bool);
    function getForgePathDetailsERC1155WithERC721Address(uint256 pathId) external view returns (uint256, address, bool, bool);
}

// File: contracts/ERC721/el/forging/ForgePathCatalogCombined.sol

pragma solidity 0.5.0;



contract ForgePathCatalogCombined is IForgePathCatalogCombined, ForgePathCatalog {    

    struct ForgePathDataTwoGen1Tokens {
      uint256 material1;
      uint256 material2;
      bool burnMaterial1;
      bool burnMaterial2;
    }

    struct ForgePathDataTwoERC721Addresses {
      address material1;
      address material2;
    }

    struct ForgePathDataERC721AddressWithGen1Token {
      address material1;
      uint256 material2;
      bool burnMaterial2;
    }

    struct ForgePathDataTwoERC1155Tokens {
      uint256 material1;
      uint256 material2;
      bool meltMaterial1;
      bool meltMaterial2;
      bool material1IsNonFungible;
      bool material2IsNonFungible;
    }

    struct ForgePathDataERC1155WithGen1Token {
      uint256 material1;
      uint256 material2;
      bool meltMaterial1;
      bool burnMaterial2;
      bool material1IsNonFungible;      
    }

    struct ForgePathDataERC1155WithERC721Address {
      uint256 material1;
      address material2;
      bool meltMaterial1;
      bool material1IsNonFungible;
    }

    mapping (uint256 => ForgePathDataTwoGen1Tokens) private forgePathMapTwoGen1Tokens;
    mapping (uint256 => ForgePathDataTwoERC721Addresses) private forgePathMapTwoERC721Addresses;
    mapping (uint256 => ForgePathDataERC721AddressWithGen1Token) private forgePathMapERC721AddressWithGen1Token;
    mapping (uint256 => ForgePathDataTwoERC1155Tokens) private forgePathMapTwoERC1155Tokens;
    mapping (uint256 => ForgePathDataERC1155WithGen1Token) private forgePathMapERC1155WithGen1Token;
    mapping (uint256 => ForgePathDataERC1155WithERC721Address) private forgePathMapERC1155WithERC721Address;

    constructor() public 
      ForgePathCatalog()
    {      
    }    

    function unregisterForgePath(string calldata pathName) external {        
        uint256 forgePathId = getForgePathId(pathName);
        uint8 forgeType = _getForgeType(forgePathId);        
        unregisterForgePathCommon(pathName);      

        if(forgeType == 1) {
          delete forgePathMapTwoGen1Tokens[forgePathId];    
        } else if(forgeType == 2) {
          delete forgePathMapTwoERC721Addresses[forgePathId];    
        } else if(forgeType == 3) {
          delete forgePathMapERC721AddressWithGen1Token[forgePathId];    
        } else if(forgeType == 4) {
          delete forgePathMapTwoERC1155Tokens[forgePathId];    
        } else if(forgeType == 5) {
          delete forgePathMapERC1155WithGen1Token[forgePathId];     
        } else if(forgeType == 6) {
          delete forgePathMapERC1155WithERC721Address[forgePathId];    
        } else {
          revert("Non-existent forge type");
        }
    }    

    function registerForgePathTwoGen1Tokens(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem, 
      uint256 material1, 
      uint256 material2,       
      bool burnMaterial1,       
      bool burnMaterial2) 
      external {
        registerForgePathCommon(pathName, 1, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);             
        
        forgePathMapTwoGen1Tokens[forgePathId].material1 = material1;
        forgePathMapTwoGen1Tokens[forgePathId].material2 = material2;
        forgePathMapTwoGen1Tokens[forgePathId].burnMaterial1 = burnMaterial1;
        forgePathMapTwoGen1Tokens[forgePathId].burnMaterial2 = burnMaterial2;        
    }        

    function getForgePathDetailsTwoGen1Tokens(uint256 pathId) external view returns (uint256, uint256, bool, bool) {              
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataTwoGen1Tokens memory forgePathData = forgePathMapTwoGen1Tokens[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2,
        forgePathData.burnMaterial1,
        forgePathData.burnMaterial2        
      );
    }    

    function registerForgePathTwoERC721Addresses(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem, 
      address material1, 
      address material2) 
      external {
        registerForgePathCommon(pathName, 2, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);             
        
        forgePathMapTwoERC721Addresses[forgePathId].material1 = material1;
        forgePathMapTwoERC721Addresses[forgePathId].material2 = material2;
    }        

    function getForgePathDetailsTwoERC721Addresses(uint256 pathId) external view returns (address, address) {
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataTwoERC721Addresses memory forgePathData = forgePathMapTwoERC721Addresses[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2
      );
    }

    function registerForgePathERC721AddressWithGen1Token(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem,
      address material1, 
      uint256 material2,             
      bool burnMaterial2) 
      external {
        registerForgePathCommon(pathName, 3, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);

        forgePathMapERC721AddressWithGen1Token[forgePathId].material1 = material1;
        forgePathMapERC721AddressWithGen1Token[forgePathId].material2 = material2;
        forgePathMapERC721AddressWithGen1Token[forgePathId].burnMaterial2 = burnMaterial2;
    }    

    function getForgePathDetailsERC721AddressWithGen1Token(uint256 pathId) external view returns (address, uint256, bool) {
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataERC721AddressWithGen1Token memory forgePathData = forgePathMapERC721AddressWithGen1Token[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2,
        forgePathData.burnMaterial2
      );
    }

    function registerForgePathTwoERC1155Tokens(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem, 
      uint256 material1, 
      uint256 material2,       
      bool meltMaterial1, 
      bool meltMaterial2, 
      bool material1IsNonFungible, 
      bool material2IsNonFungible) 
      external {
        registerForgePathCommon(pathName, 4, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);                

        forgePathMapTwoERC1155Tokens[forgePathId].material1 = material1;
        forgePathMapTwoERC1155Tokens[forgePathId].material2 = material2;
        forgePathMapTwoERC1155Tokens[forgePathId].meltMaterial1 = meltMaterial1;
        forgePathMapTwoERC1155Tokens[forgePathId].meltMaterial2 = meltMaterial2;
        forgePathMapTwoERC1155Tokens[forgePathId].material1IsNonFungible = material1IsNonFungible;
        forgePathMapTwoERC1155Tokens[forgePathId].material2IsNonFungible = material2IsNonFungible;
    }  

    function getForgePathDetailsTwoERC1155Tokens(uint256 pathId) external view returns (uint256, uint256, bool, bool, bool, bool) {
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataTwoERC1155Tokens memory forgePathData = forgePathMapTwoERC1155Tokens[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2,
        forgePathData.meltMaterial1,
        forgePathData.meltMaterial2,
        forgePathData.material1IsNonFungible,
        forgePathData.material2IsNonFungible
      );
    }

    function registerForgePathERC1155WithGen1Token(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem, 
      uint256 material1, 
      uint256 material2,       
      bool meltMaterial1, 
      bool burnMaterial2,
      bool material1IsNonFungible) 
      external {
        registerForgePathCommon(pathName, 5, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);             

        forgePathMapERC1155WithGen1Token[forgePathId].material1 = material1;
        forgePathMapERC1155WithGen1Token[forgePathId].material2 = material2;
        forgePathMapERC1155WithGen1Token[forgePathId].meltMaterial1 = meltMaterial1;
        forgePathMapERC1155WithGen1Token[forgePathId].burnMaterial2 = burnMaterial2;
        forgePathMapERC1155WithGen1Token[forgePathId].material1IsNonFungible = material1IsNonFungible;        
    }        

    function getForgePathDetailsERC1155WithGen1Token(uint256 pathId) external view returns (uint256, uint256, bool, bool, bool) {
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataERC1155WithGen1Token memory forgePathData = forgePathMapERC1155WithGen1Token[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2,
        forgePathData.meltMaterial1,
        forgePathData.burnMaterial2,
        forgePathData.material1IsNonFungible
      );
    }

    function registerForgePathERC1155WithERC721Address(
      string calldata pathName,
      uint256 weiCost,
      uint256 elementeumCost,
      uint256 forgedItem, 
      uint256 material1, 
      address material2, 
      bool meltMaterial1, 
      bool material1IsNonFungible) 
      external {
        registerForgePathCommon(pathName, 6, weiCost, elementeumCost, forgedItem);
        uint256 forgePathId = getForgePathId(pathName);            

        forgePathMapERC1155WithERC721Address[forgePathId].material1 = material1;
        forgePathMapERC1155WithERC721Address[forgePathId].material2 = material2;
        forgePathMapERC1155WithERC721Address[forgePathId].meltMaterial1 = meltMaterial1;
        forgePathMapERC1155WithERC721Address[forgePathId].material1IsNonFungible = material1IsNonFungible;
    }        

    function getForgePathDetailsERC1155WithERC721Address(uint256 pathId) external view returns (uint256, address, bool, bool) {
      require(_hasPathDefinition(pathId), "path not defined");
      ForgePathDataERC1155WithERC721Address memory forgePathData = forgePathMapERC1155WithERC721Address[pathId];
      return 
      (
        forgePathData.material1,
        forgePathData.material2,
        forgePathData.meltMaterial1,
        forgePathData.material1IsNonFungible
      );
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"destroyContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"}],"name":"unregisterForgePath","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"forgePathNames","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pathName","type":"string"}],"name":"getForgePathId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getNumberOfPathDefinitions","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"uint256"},{"name":"material2","type":"uint256"},{"name":"burnMaterial1","type":"bool"},{"name":"burnMaterial2","type":"bool"}],"name":"registerForgePathTwoGen1Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsTwoERC721Addresses","outputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pathName","type":"string"}],"name":"hasPathDefinitionByName","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsERC721AddressWithGen1Token","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"address"},{"name":"material2","type":"uint256"},{"name":"burnMaterial2","type":"bool"}],"name":"registerForgePathERC721AddressWithGen1Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsERC1155WithGen1Token","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"uint256"},{"name":"material2","type":"uint256"},{"name":"meltMaterial1","type":"bool"},{"name":"meltMaterial2","type":"bool"},{"name":"material1IsNonFungible","type":"bool"},{"name":"material2IsNonFungible","type":"bool"}],"name":"registerForgePathTwoERC1155Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgeType","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"address"},{"name":"material2","type":"address"}],"name":"registerForgePathTwoERC721Addresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsTwoERC1155Tokens","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsTwoGen1Tokens","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getForgePathIdAtIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"uint256"},{"name":"material2","type":"address"},{"name":"meltMaterial1","type":"bool"},{"name":"material1IsNonFungible","type":"bool"}],"name":"registerForgePathERC1155WithERC721Address","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsCommon","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getForgePathNameAtIndex","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"pathName","type":"string"},{"name":"weiCost","type":"uint256"},{"name":"elementeumCost","type":"uint256"},{"name":"forgedItem","type":"uint256"},{"name":"material1","type":"uint256"},{"name":"material2","type":"uint256"},{"name":"meltMaterial1","type":"bool"},{"name":"burnMaterial2","type":"bool"},{"name":"material1IsNonFungible","type":"bool"}],"name":"registerForgePathERC1155WithGen1Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"getForgePathDetailsERC1155WithERC721Address","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bool"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"pathId","type":"uint256"}],"name":"hasPathDefinition","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052600060015534801561001557600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3613c6e806100e16000396000f3fe60806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063092a5cce146101f35780630c0092f71461020a57806314fe9b461461029057806317ecc1a5146103445780631a5a1b48146104205780632bd2bbb91461044b57806337e304391461051c5780634b1f9d62146105ca5780634b6f6279146106685780634da18763146106f557806360b2a8e7146107cf57806363ab5c5b1461084657806367aec4c51461092f57806367c3f7c214610984578063715018a614610a685780637198459a14610a7f57806379f127c414610b015780638da5cb5b14610b6d5780638f32d59b14610bc4578063b132a82d14610bf3578063c20e3fbc14610c42578063c88d1d7914610d29578063c9de718914610d86578063d8bede0314610e3a578063de4a73a414610f17578063f2fde38b14610faf578063f4e8558014611000575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f46616c6c6261636b2066756e6374696f6e206973206e6f74207065726d69747481526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3480156101ff57600080fd5b50610208611053565b005b34801561021657600080fd5b5061028e6004803603602081101561022d57600080fd5b810190808035906020019064010000000081111561024a57600080fd5b82018360208201111561025c57600080fd5b8035906020019184600183028401116401000000008311171561027e57600080fd5b9091929391929390505050611080565b005b34801561029c57600080fd5b506102c9600480360360208110156102b357600080fd5b810190808035906020019092919050505061145a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103095780820151818401526020810190506102ee565b50505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035057600080fd5b5061040a6004803603602081101561036757600080fd5b810190808035906020019064010000000081111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460018302840111640100000000831117156103b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611515565b6040518082815260200191505060405180910390f35b34801561042c57600080fd5b50610435611607565b6040518082815260200191505060405180910390f35b34801561045757600080fd5b5061051a600480360361010081101561046f57600080fd5b810190808035906020019064010000000081111561048c57600080fd5b82018360208201111561049e57600080fd5b803590602001918460018302840111640100000000831117156104c057600080fd5b90919293919293908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611614565b005b34801561052857600080fd5b506105556004803603602081101561053f57600080fd5b8101908080359060200190929190505050611755565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b3480156105d657600080fd5b5061064e600480360360208110156105ed57600080fd5b810190808035906020019064010000000081111561060a57600080fd5b82018360208201111561061c57600080fd5b8035906020019184600183028401116401000000008311171561063e57600080fd5b90919293919293905050506118bd565b604051808215151515815260200191505060405180910390f35b34801561067457600080fd5b506106a16004803603602081101561068b57600080fd5b8101908080359060200190929190505050611914565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b34801561070157600080fd5b506107cd600480360360e081101561071857600080fd5b810190808035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184600183028401116401000000008311171561076957600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050611a57565b005b3480156107db57600080fd5b50610808600480360360208110156107f257600080fd5b8101908080359060200190929190505050611ba3565b604051808681526020018581526020018415151515815260200183151515158152602001821515151581526020019550505050505060405180910390f35b34801561085257600080fd5b5061092d600480360361014081101561086a57600080fd5b810190808035906020019064010000000081111561088757600080fd5b82018360208201111561089957600080fd5b803590602001918460018302840111640100000000831117156108bb57600080fd5b90919293919293908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190803515159060200190929190803515159060200190929190505050611ce3565b005b34801561093b57600080fd5b506109686004803603602081101561095257600080fd5b8101908080359060200190929190505050611e82565b604051808260ff1660ff16815260200191505060405180910390f35b34801561099057600080fd5b50610a66600480360360c08110156109a757600080fd5b81019080803590602001906401000000008111156109c457600080fd5b8201836020820111156109d657600080fd5b803590602001918460018302840111640100000000831117156109f857600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e94565b005b348015610a7457600080fd5b50610a7d611feb565b005b348015610a8b57600080fd5b50610ab860048036036020811015610aa257600080fd5b8101908080359060200190929190505050612126565b6040518087815260200186815260200185151515158152602001841515151581526020018315151515815260200182151515158152602001965050505050505060405180910390f35b348015610b0d57600080fd5b50610b3a60048036036020811015610b2457600080fd5b8101908080359060200190929190505050612289565b60405180858152602001848152602001831515151581526020018215151515815260200194505050505060405180910390f35b348015610b7957600080fd5b50610b826123a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bd057600080fd5b50610bd96123cc565b604051808215151515815260200191505060405180910390f35b348015610bff57600080fd5b50610c2c60048036036020811015610c1657600080fd5b8101908080359060200190929190505050612423565b6040518082815260200191505060405180910390f35b348015610c4e57600080fd5b50610d276004803603610100811015610c6657600080fd5b8101908080359060200190640100000000811115610c8357600080fd5b820183602082011115610c9557600080fd5b80359060200191846001830284011164010000000083111715610cb757600080fd5b909192939192939080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050612648565b005b348015610d3557600080fd5b50610d6260048036036020811015610d4c57600080fd5b81019080803590602001909291905050506127c3565b60405180848152602001838152602001828152602001935050505060405180910390f35b348015610d9257600080fd5b50610dbf60048036036020811015610da957600080fd5b81019080803590602001909291905050506127f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dff578082015181840152602081019050610de4565b50505050905090810190601f168015610e2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4657600080fd5b50610f156004803603610120811015610e5e57600080fd5b8101908080359060200190640100000000811115610e7b57600080fd5b820183602082011115610e8d57600080fd5b80359060200191846001830284011164010000000083111715610eaf57600080fd5b909192939192939080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035151590602001909291908035151590602001909291908035151590602001909291905050506129b2565b005b348015610f2357600080fd5b50610f5060048036036020811015610f3a57600080fd5b8101908080359060200190929190505050612b22565b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018215151515815260200194505050505060405180910390f35b348015610fbb57600080fd5b50610ffe60048036036020811015610fd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c88565b005b34801561100c57600080fd5b506110396004803603602081101561102357600080fd5b8101908080359060200190929190505050612d10565b604051808215151515815260200191505060405180910390f35b61105b612d22565b60006110656123a3565b90508073ffffffffffffffffffffffffffffffffffffffff16ff5b60006110cf83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905060006110dc82612da0565b905061112b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e4a565b60018160ff16141561118a576007600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690555050611454565b60028160ff1614156111ff5760086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050611453565b60038160ff1614156112695760096000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549060ff02191690555050611452565b60048160ff1614156112f057600a600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690556002820160026101000a81549060ff02191690556002820160036101000a81549060ff02191690555050611451565b60058160ff16141561136357600b600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690556002820160026101000a81549060ff02191690555050611450565b60068160ff1614156113e157600c60008381526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549060ff02191690556001820160156101000a81549060ff0219169055505061144f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f6e2d6578697374656e7420666f726765207479706500000000000000000081525060200191505060405180910390fd5b5b5b5b5b5b50505050565b60028181548110151561146957fe5b906000526020600020016000915090508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561150d5780601f106114e25761010080835404028352916020019161150d565b820191906000526020600020905b8154815290600101906020018083116114f057829003601f168201915b505050505081565b6000611520826131c3565b1515611594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6004826040518082805190602001908083835b6020831015156115cc57805182526020820191506020810190506020830392506115a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020549050919050565b6000600280549050905090565b61166689898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600189898961323b565b60006116b58a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050846007600083815260200190815260200160002060000181905550836007600083815260200190815260200160002060010181905550826007600083815260200190815260200160002060020160006101000a81548160ff021916908315150217905550816007600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555050505050505050505050565b600080611761836134fb565b15156117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6117dd6138e5565b600860008581526020019081526020016000206040805190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015181602001519250925050915091565b600061190c83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131c3565b905092915050565b6000806000611922846134fb565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b61199e61392b565b60096000868152602001908152602001600020606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1615151515815250509050806000015181602001518260400151935093509350509193909250565b611aa988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600388888861323b565b6000611af889898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050836009600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826009600083815260200190815260200160002060010181905550816009600083815260200190815260200160002060020160006101000a81548160ff021916908315150217905550505050505050505050565b6000806000806000611bb4866134fb565b1515611c28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b611c30613965565b600b600088815260200190815260200160002060a0604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581526020016002820160029054906101000a900460ff161515151581525050905080600001518160200151826040015183606001518460800151955095509550955095505091939590929450565b611d358b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060048b8b8b61323b565b6000611d848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905086600a60008381526020019081526020016000206000018190555085600a60008381526020019081526020016000206001018190555084600a600083815260200190815260200160002060020160006101000a81548160ff02191690831515021790555083600a600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555082600a600083815260200190815260200160002060020160026101000a81548160ff02191690831515021790555081600a600083815260200190815260200160002060020160036101000a81548160ff021916908315150217905550505050505050505050505050565b6000611e8d82612da0565b9050919050565b611ee687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600287878761323b565b6000611f3588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050826008600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816008600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050565b611ff36123cc565b1515612067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600080612138876134fb565b15156121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6121b461399b565b600a600089815260200190815260200160002060c0604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581526020016002820160029054906101000a900460ff161515151581526020016002820160039054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560a001519650965096509650965096505091939550919395565b600080600080612298856134fb565b151561230c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6123146139da565b600760008781526020019081526020016000206080604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600280549050821015156124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e646578204f7574204f662052616e6765000000000000000000000000000081525060200191505060405180910390fd5b60606002838154811015156124b257fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125505780601f1061252557610100808354040283529160200191612550565b820191906000526020600020905b81548152906001019060200180831161253357829003601f168201915b50505050509050612560816131c3565b15156125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6004816040518082805190602001908083835b60208310151561260c57805182526020820191506020810190506020830392506125e7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915050919050565b61269a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600689898961323b565b60006126e98a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905084600c60008381526020019081526020016000206000018190555083600c600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c600083815260200190815260200160002060010160146101000a81548160ff02191690831515021790555081600c600083815260200190815260200160002060010160156101000a81548160ff02191690831515021790555050505050505050505050565b60008060006127d0613a07565b6127d9856135bb565b9050806020015181604001518260600151935093509350509193909250565b606060028054905082101515612876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e646578204f7574204f662052616e6765000000000000000000000000000081525060200191505060405180910390fd5b606060028381548110151561288757fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129255780601f106128fa57610100808354040283529160200191612925565b820191906000526020600020905b81548152906001019060200180831161290857829003601f168201915b50505050509050612935816131c3565b15156129a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b612a048a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060058a8a8a61323b565b6000612a538b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905085600b60008381526020019081526020016000206000018190555084600b60008381526020019081526020016000206001018190555083600b600083815260200190815260200160002060020160006101000a81548160ff02191690831515021790555082600b600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555081600b600083815260200190815260200160002060020160026101000a81548160ff0219169083151502179055505050505050505050505050565b600080600080612b31856134fb565b1515612ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b612bad613a33565b600c600087815260200190815260200160002060806040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016001820160159054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b612c906123cc565b1515612d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612d0d816136a1565b50565b6000612d1b826134fb565b9050919050565b612d2a6123cc565b1515612d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b565b6000612dab826134fb565b1515612e1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900460ff169050919050565b612e52612d22565b612e5b816131c3565b1515612ecf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b60006004826040518082805190602001908083835b602083101515612f095780518252602082019150602081019050602083039250612ee4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054905060006003600083815260200190815260200160002054905060036000838152602001908152602001600020600090556004836040518082805190602001908083835b602083101515612fa65780518252602082019150602081019050602083039250612f81565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009055600560008381526020019081526020016000206000612ffc9190613a76565b60066000838152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905560028201600090556003820160009055505060606130498261382a565b9050606061305e60016002805490500361382a565b905060006004826040518082805190602001908083835b60208310151561309a5780518252602082019150602081019050602083039250613075565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054905060026001600280549050038154811015156130e757fe5b9060005260206000200160028581548110151561310057fe5b906000526020600020019080546001816001161561010002031660029004613129929190613abe565b5082600260016002805490500381548110151561314257fe5b90600052602060002001908051906020019061315f929190613b45565b50836003600083815260200190815260200160002081905550600260016002805490500381548110151561318f57fe5b9060005260206000200160006131a59190613a76565b60028054809190600190036131ba9190613bc5565b50505050505050565b6000806004836040518082805190602001908083835b6020831015156131fe57805182526020820191506020810190506020830392506131d9565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205414159050919050565b613243612d22565b61324c856131c3565b1515156132c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7061746820616c726561647920646566696e656400000000000000000000000081525060200191505060405180910390fd5b60208551101515613360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f70617468206e616d65206d6179206e6f7420657863656564203331206368617281526020017f616374657273000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008154809291906001019190505550600280549050600360006001548152602001908152602001600020819055506001546004866040518082805190602001908083835b6020831015156133cc57805182526020820191506020810190506020830392506133a7565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208190555084600560006001548152602001908152602001600020908051906020019061342c929190613b45565b50600285908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061346a929190613b45565b50508360066000600154815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508260066000600154815260200190815260200160002060010181905550816006600060015481526020019081526020016000206002018190555080600660006001548152602001908152602001600020600301819055505050505050565b60006060600560008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156135a65780601f1061357b576101008083540402835291602001916135a6565b820191906000526020600020905b81548152906001019060200180831161358957829003601f168201915b50505050509050600081511415915050919050565b6135c3613a07565b6135cc826134fb565b1515613640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b60066000838152602001908152602001600020608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815250509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561376c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060028281548110151561383b57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156138d95780601f106138ae576101008083540402835291602001916138d9565b820191906000526020600020905b8154815290600101906020018083116138bc57829003601f168201915b50505050509050919050565b6040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b60a06040519081016040528060008152602001600081526020016000151581526020016000151581526020016000151581525090565b60c06040519081016040528060008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b60806040519081016040528060008152602001600081526020016000151581526020016000151581525090565b608060405190810160405280600060ff1681526020016000815260200160008152602001600081525090565b60806040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581525090565b50805460018160011615610100020316600290046000825580601f10613a9c5750613abb565b601f016020900490600052602060002090810190613aba9190613bf1565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613af75780548555613b34565b82800160010185558215613b3457600052602060002091601f016020900482015b82811115613b33578254825591600101919060010190613b18565b5b509050613b419190613bf1565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b8657805160ff1916838001178555613bb4565b82800160010185558215613bb4579182015b82811115613bb3578251825591602001919060010190613b98565b5b509050613bc19190613bf1565b5090565b815481835581811115613bec57818360005260206000209182019101613beb9190613c16565b5b505050565b613c1391905b80821115613c0f576000816000905550600101613bf7565b5090565b90565b613c3f91905b80821115613c3b5760008181613c329190613a76565b50600101613c1c565b5090565b9056fea165627a7a723058207bd4b4f60b1b5b274671f56de77b595229bc8f88a9e6a6890b1c88f2220d7c530029

Deployed Bytecode

0x60806040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063092a5cce146101f35780630c0092f71461020a57806314fe9b461461029057806317ecc1a5146103445780631a5a1b48146104205780632bd2bbb91461044b57806337e304391461051c5780634b1f9d62146105ca5780634b6f6279146106685780634da18763146106f557806360b2a8e7146107cf57806363ab5c5b1461084657806367aec4c51461092f57806367c3f7c214610984578063715018a614610a685780637198459a14610a7f57806379f127c414610b015780638da5cb5b14610b6d5780638f32d59b14610bc4578063b132a82d14610bf3578063c20e3fbc14610c42578063c88d1d7914610d29578063c9de718914610d86578063d8bede0314610e3a578063de4a73a414610f17578063f2fde38b14610faf578063f4e8558014611000575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f46616c6c6261636b2066756e6374696f6e206973206e6f74207065726d69747481526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3480156101ff57600080fd5b50610208611053565b005b34801561021657600080fd5b5061028e6004803603602081101561022d57600080fd5b810190808035906020019064010000000081111561024a57600080fd5b82018360208201111561025c57600080fd5b8035906020019184600183028401116401000000008311171561027e57600080fd5b9091929391929390505050611080565b005b34801561029c57600080fd5b506102c9600480360360208110156102b357600080fd5b810190808035906020019092919050505061145a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103095780820151818401526020810190506102ee565b50505050905090810190601f1680156103365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035057600080fd5b5061040a6004803603602081101561036757600080fd5b810190808035906020019064010000000081111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460018302840111640100000000831117156103b857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611515565b6040518082815260200191505060405180910390f35b34801561042c57600080fd5b50610435611607565b6040518082815260200191505060405180910390f35b34801561045757600080fd5b5061051a600480360361010081101561046f57600080fd5b810190808035906020019064010000000081111561048c57600080fd5b82018360208201111561049e57600080fd5b803590602001918460018302840111640100000000831117156104c057600080fd5b90919293919293908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611614565b005b34801561052857600080fd5b506105556004803603602081101561053f57600080fd5b8101908080359060200190929190505050611755565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b3480156105d657600080fd5b5061064e600480360360208110156105ed57600080fd5b810190808035906020019064010000000081111561060a57600080fd5b82018360208201111561061c57600080fd5b8035906020019184600183028401116401000000008311171561063e57600080fd5b90919293919293905050506118bd565b604051808215151515815260200191505060405180910390f35b34801561067457600080fd5b506106a16004803603602081101561068b57600080fd5b8101908080359060200190929190505050611914565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b34801561070157600080fd5b506107cd600480360360e081101561071857600080fd5b810190808035906020019064010000000081111561073557600080fd5b82018360208201111561074757600080fd5b8035906020019184600183028401116401000000008311171561076957600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050611a57565b005b3480156107db57600080fd5b50610808600480360360208110156107f257600080fd5b8101908080359060200190929190505050611ba3565b604051808681526020018581526020018415151515815260200183151515158152602001821515151581526020019550505050505060405180910390f35b34801561085257600080fd5b5061092d600480360361014081101561086a57600080fd5b810190808035906020019064010000000081111561088757600080fd5b82018360208201111561089957600080fd5b803590602001918460018302840111640100000000831117156108bb57600080fd5b90919293919293908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190803515159060200190929190803515159060200190929190505050611ce3565b005b34801561093b57600080fd5b506109686004803603602081101561095257600080fd5b8101908080359060200190929190505050611e82565b604051808260ff1660ff16815260200191505060405180910390f35b34801561099057600080fd5b50610a66600480360360c08110156109a757600080fd5b81019080803590602001906401000000008111156109c457600080fd5b8201836020820111156109d657600080fd5b803590602001918460018302840111640100000000831117156109f857600080fd5b9091929391929390803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e94565b005b348015610a7457600080fd5b50610a7d611feb565b005b348015610a8b57600080fd5b50610ab860048036036020811015610aa257600080fd5b8101908080359060200190929190505050612126565b6040518087815260200186815260200185151515158152602001841515151581526020018315151515815260200182151515158152602001965050505050505060405180910390f35b348015610b0d57600080fd5b50610b3a60048036036020811015610b2457600080fd5b8101908080359060200190929190505050612289565b60405180858152602001848152602001831515151581526020018215151515815260200194505050505060405180910390f35b348015610b7957600080fd5b50610b826123a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bd057600080fd5b50610bd96123cc565b604051808215151515815260200191505060405180910390f35b348015610bff57600080fd5b50610c2c60048036036020811015610c1657600080fd5b8101908080359060200190929190505050612423565b6040518082815260200191505060405180910390f35b348015610c4e57600080fd5b50610d276004803603610100811015610c6657600080fd5b8101908080359060200190640100000000811115610c8357600080fd5b820183602082011115610c9557600080fd5b80359060200191846001830284011164010000000083111715610cb757600080fd5b909192939192939080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050612648565b005b348015610d3557600080fd5b50610d6260048036036020811015610d4c57600080fd5b81019080803590602001909291905050506127c3565b60405180848152602001838152602001828152602001935050505060405180910390f35b348015610d9257600080fd5b50610dbf60048036036020811015610da957600080fd5b81019080803590602001909291905050506127f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dff578082015181840152602081019050610de4565b50505050905090810190601f168015610e2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610e4657600080fd5b50610f156004803603610120811015610e5e57600080fd5b8101908080359060200190640100000000811115610e7b57600080fd5b820183602082011115610e8d57600080fd5b80359060200191846001830284011164010000000083111715610eaf57600080fd5b909192939192939080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035151590602001909291908035151590602001909291908035151590602001909291905050506129b2565b005b348015610f2357600080fd5b50610f5060048036036020811015610f3a57600080fd5b8101908080359060200190929190505050612b22565b604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001831515151581526020018215151515815260200194505050505060405180910390f35b348015610fbb57600080fd5b50610ffe60048036036020811015610fd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c88565b005b34801561100c57600080fd5b506110396004803603602081101561102357600080fd5b8101908080359060200190929190505050612d10565b604051808215151515815260200191505060405180910390f35b61105b612d22565b60006110656123a3565b90508073ffffffffffffffffffffffffffffffffffffffff16ff5b60006110cf83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905060006110dc82612da0565b905061112b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612e4a565b60018160ff16141561118a576007600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690555050611454565b60028160ff1614156111ff5760086000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555050611453565b60038160ff1614156112695760096000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160006101000a81549060ff02191690555050611452565b60048160ff1614156112f057600a600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690556002820160026101000a81549060ff02191690556002820160036101000a81549060ff02191690555050611451565b60058160ff16141561136357600b600083815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff02191690556002820160016101000a81549060ff02191690556002820160026101000a81549060ff02191690555050611450565b60068160ff1614156113e157600c60008381526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549060ff02191690556001820160156101000a81549060ff0219169055505061144f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f6e2d6578697374656e7420666f726765207479706500000000000000000081525060200191505060405180910390fd5b5b5b5b5b5b50505050565b60028181548110151561146957fe5b906000526020600020016000915090508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561150d5780601f106114e25761010080835404028352916020019161150d565b820191906000526020600020905b8154815290600101906020018083116114f057829003601f168201915b505050505081565b6000611520826131c3565b1515611594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6004826040518082805190602001908083835b6020831015156115cc57805182526020820191506020810190506020830392506115a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020549050919050565b6000600280549050905090565b61166689898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600189898961323b565b60006116b58a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050846007600083815260200190815260200160002060000181905550836007600083815260200190815260200160002060010181905550826007600083815260200190815260200160002060020160006101000a81548160ff021916908315150217905550816007600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555050505050505050505050565b600080611761836134fb565b15156117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6117dd6138e5565b600860008581526020019081526020016000206040805190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050806000015181602001519250925050915091565b600061190c83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131c3565b905092915050565b6000806000611922846134fb565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b61199e61392b565b60096000868152602001908152602001600020606060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1615151515815250509050806000015181602001518260400151935093509350509193909250565b611aa988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600388888861323b565b6000611af889898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050836009600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826009600083815260200190815260200160002060010181905550816009600083815260200190815260200160002060020160006101000a81548160ff021916908315150217905550505050505050505050565b6000806000806000611bb4866134fb565b1515611c28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b611c30613965565b600b600088815260200190815260200160002060a0604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581526020016002820160029054906101000a900460ff161515151581525050905080600001518160200151826040015183606001518460800151955095509550955095505091939590929450565b611d358b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060048b8b8b61323b565b6000611d848c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905086600a60008381526020019081526020016000206000018190555085600a60008381526020019081526020016000206001018190555084600a600083815260200190815260200160002060020160006101000a81548160ff02191690831515021790555083600a600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555082600a600083815260200190815260200160002060020160026101000a81548160ff02191690831515021790555081600a600083815260200190815260200160002060020160036101000a81548160ff021916908315150217905550505050505050505050505050565b6000611e8d82612da0565b9050919050565b611ee687878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600287878761323b565b6000611f3588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b9050826008600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816008600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050565b611ff36123cc565b1515612067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600080612138876134fb565b15156121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6121b461399b565b600a600089815260200190815260200160002060c0604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581526020016002820160029054906101000a900460ff161515151581526020016002820160039054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560a001519650965096509650965096505091939550919395565b600080600080612298856134fb565b151561230c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6123146139da565b600760008781526020019081526020016000206080604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff161515151581526020016002820160019054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600280549050821015156124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e646578204f7574204f662052616e6765000000000000000000000000000081525060200191505060405180910390fd5b60606002838154811015156124b257fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125505780601f1061252557610100808354040283529160200191612550565b820191906000526020600020905b81548152906001019060200180831161253357829003601f168201915b50505050509050612560816131c3565b15156125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6004816040518082805190602001908083835b60208310151561260c57805182526020820191506020810190506020830392506125e7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915050919050565b61269a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600689898961323b565b60006126e98a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905084600c60008381526020019081526020016000206000018190555083600c600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c600083815260200190815260200160002060010160146101000a81548160ff02191690831515021790555081600c600083815260200190815260200160002060010160156101000a81548160ff02191690831515021790555050505050505050505050565b60008060006127d0613a07565b6127d9856135bb565b9050806020015181604001518260600151935093509350509193909250565b606060028054905082101515612876576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f496e646578204f7574204f662052616e6765000000000000000000000000000081525060200191505060405180910390fd5b606060028381548110151561288757fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129255780601f106128fa57610100808354040283529160200191612925565b820191906000526020600020905b81548152906001019060200180831161290857829003601f168201915b50505050509050612935816131c3565b15156129a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b612a048a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060058a8a8a61323b565b6000612a538b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611515565b905085600b60008381526020019081526020016000206000018190555084600b60008381526020019081526020016000206001018190555083600b600083815260200190815260200160002060020160006101000a81548160ff02191690831515021790555082600b600083815260200190815260200160002060020160016101000a81548160ff02191690831515021790555081600b600083815260200190815260200160002060020160026101000a81548160ff0219169083151502179055505050505050505050505050565b600080600080612b31856134fb565b1515612ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b612bad613a33565b600c600087815260200190815260200160002060806040519081016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016001820160159054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b612c906123cc565b1515612d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b612d0d816136a1565b50565b6000612d1b826134fb565b9050919050565b612d2a6123cc565b1515612d9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b565b6000612dab826134fb565b1515612e1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900460ff169050919050565b612e52612d22565b612e5b816131c3565b1515612ecf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b60006004826040518082805190602001908083835b602083101515612f095780518252602082019150602081019050602083039250612ee4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054905060006003600083815260200190815260200160002054905060036000838152602001908152602001600020600090556004836040518082805190602001908083835b602083101515612fa65780518252602082019150602081019050602083039250612f81565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009055600560008381526020019081526020016000206000612ffc9190613a76565b60066000838152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905560028201600090556003820160009055505060606130498261382a565b9050606061305e60016002805490500361382a565b905060006004826040518082805190602001908083835b60208310151561309a5780518252602082019150602081019050602083039250613075565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054905060026001600280549050038154811015156130e757fe5b9060005260206000200160028581548110151561310057fe5b906000526020600020019080546001816001161561010002031660029004613129929190613abe565b5082600260016002805490500381548110151561314257fe5b90600052602060002001908051906020019061315f929190613b45565b50836003600083815260200190815260200160002081905550600260016002805490500381548110151561318f57fe5b9060005260206000200160006131a59190613a76565b60028054809190600190036131ba9190613bc5565b50505050505050565b6000806004836040518082805190602001908083835b6020831015156131fe57805182526020820191506020810190506020830392506131d9565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390205414159050919050565b613243612d22565b61324c856131c3565b1515156132c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7061746820616c726561647920646566696e656400000000000000000000000081525060200191505060405180910390fd5b60208551101515613360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f70617468206e616d65206d6179206e6f7420657863656564203331206368617281526020017f616374657273000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008154809291906001019190505550600280549050600360006001548152602001908152602001600020819055506001546004866040518082805190602001908083835b6020831015156133cc57805182526020820191506020810190506020830392506133a7565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208190555084600560006001548152602001908152602001600020908051906020019061342c929190613b45565b50600285908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061346a929190613b45565b50508360066000600154815260200190815260200160002060000160006101000a81548160ff021916908360ff1602179055508260066000600154815260200190815260200160002060010181905550816006600060015481526020019081526020016000206002018190555080600660006001548152602001908152602001600020600301819055505050505050565b60006060600560008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156135a65780601f1061357b576101008083540402835291602001916135a6565b820191906000526020600020905b81548152906001019060200180831161358957829003601f168201915b50505050509050600081511415915050919050565b6135c3613a07565b6135cc826134fb565b1515613640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f70617468206e6f7420646566696e65640000000000000000000000000000000081525060200191505060405180910390fd5b60066000838152602001908152602001600020608060405190810160405290816000820160009054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815250509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561376c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060028281548110151561383b57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156138d95780601f106138ae576101008083540402835291602001916138d9565b820191906000526020600020905b8154815290600101906020018083116138bc57829003601f168201915b50505050509050919050565b6040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000151581525090565b60a06040519081016040528060008152602001600081526020016000151581526020016000151581526020016000151581525090565b60c06040519081016040528060008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b60806040519081016040528060008152602001600081526020016000151581526020016000151581525090565b608060405190810160405280600060ff1681526020016000815260200160008152602001600081525090565b60806040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581525090565b50805460018160011615610100020316600290046000825580601f10613a9c5750613abb565b601f016020900490600052602060002090810190613aba9190613bf1565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613af75780548555613b34565b82800160010185558215613b3457600052602060002091601f016020900482015b82811115613b33578254825591600101919060010190613b18565b5b509050613b419190613bf1565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b8657805160ff1916838001178555613bb4565b82800160010185558215613bb4579182015b82811115613bb3578251825591602001919060010190613b98565b5b509050613bc19190613bf1565b5090565b815481835581811115613bec57818360005260206000209182019101613beb9190613c16565b5b505050565b613c1391905b80821115613c0f576000816000905550600101613bf7565b5090565b90565b613c3f91905b80821115613c3b5760008181613c329190613a76565b50600101613c1c565b5090565b9056fea165627a7a723058207bd4b4f60b1b5b274671f56de77b595229bc8f88a9e6a6890b1c88f2220d7c530029

Deployed Bytecode Sourcemap

10076:10616:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3597:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3658:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3658:178:0;;;;;;11874:956;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11874:956:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11874:956:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11874:956:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11874:956:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11874:956:0;;;;;;;;;;;;;;;3181:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3181:30:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3181:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3181:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4265:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4265:202:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4265:202:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4265:202:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4265:202:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4265:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4265:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4132:117:0;;;;;;;;;;;;;;;;;;;;;;;12842:775;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12842:775:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12842:775:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12842:775:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12842:775:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12842:775:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14691:379;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14691:379:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14691:379:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3844:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3844:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3844:148:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3844:148:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3844:148:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3844:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15780:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15780:447:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15780:447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15078:690;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15078:690:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;15078:690:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;15078:690:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15078:690:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15078:690:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18817:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18817:526:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18817:526:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16235:1045;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16235:1045:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16235:1045:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;16235:1045:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16235:1045:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16235:1045:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5137:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5137:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5137:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14119:556;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14119:556:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;14119:556:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;14119:556:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14119:556:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14119:556:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1718:140:0;;;;;;17290:567;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17290:567:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17290:567:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13633:474;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13633:474:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13633:474:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;907:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;907:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1273:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4798:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4798:327:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4798:327:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19351:828;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19351:828:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19351:828:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19351:828:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19351:828:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19351:828:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5262:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5262:355:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5262:355:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:315;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:315:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4475:315:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4475:315:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17865:936;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17865:936:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17865:936:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17865:936:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17865:936:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17865:936:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20195:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20195:494:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20195:494:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2013:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2013:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2013:109:0;;;;;;;;;;;;;;;;;;;;;;4000:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4000:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4000:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3658:178;3705:19;:17;:19::i;:::-;3735:28;3782:7;:5;:7::i;:::-;3735:56;;3815:12;3802:26;;;11874:956;11957:19;11979:24;11994:8;;11979:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11979:24:0;;;;;;:14;:24::i;:::-;11957:46;;12014:15;12032:26;12046:11;12032:13;:26::i;:::-;12014:44;;12077:35;12103:8;;12077:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;12077:35:0;;;;;;:25;:35::i;:::-;12147:1;12134:9;:14;;;12131:692;;;12170:25;:38;12196:11;12170:38;;;;;;;;;;;;12163:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12131:692;;;12246:1;12233:9;:14;;;12230:593;;;12269:30;:43;12300:11;12269:43;;;;;;;;;;;;12262:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12230:593;;;12350:1;12337:9;:14;;;12334:489;;;12373:38;:51;12412:11;12373:51;;;;;;;;;;;;12366:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12334:489;;;12462:1;12449:9;:14;;;12446:377;;;12485:28;:41;12514:11;12485:41;;;;;;;;;;;;12478:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12446:377;;;12564:1;12551:9;:14;;;12548:275;;;12587:32;:45;12620:11;12587:45;;;;;;;;;;;;12580:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12548:275;;;12671:1;12658:9;:14;;;12655:168;;;12694:36;:49;12731:11;12694:49;;;;;;;;;;;;12687:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12655:168;;;12778:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12655:168;12548:275;12446:377;12334:489;12230:593;12131:692;11874:956;;;;:::o;3181:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4265:202::-;4334:7;4360:34;4385:8;4360:24;:34::i;:::-;4352:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4431:18;4450:8;4431:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4431:28:0;;;;;;;;;;;;;;;;;;;;;;4424:35;;4265:202;;;:::o;4132:117::-;4193:7;4220:14;:21;;;;4213:28;;4132:117;:::o;12842:775::-;13148:73;13172:8;;13148:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13148:73:0;;;;;;13182:1;13185:7;13194:14;13210:10;13148:23;:73::i;:::-;13232:19;13254:24;13269:8;;13254:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13254:24:0;;;;;;:14;:24::i;:::-;13232:46;;13363:9;13312:25;:38;13338:11;13312:38;;;;;;;;;;;:48;;:60;;;;13434:9;13383:25;:38;13409:11;13383:38;;;;;;;;;;;:48;;:60;;;;13509:13;13454:25;:38;13480:11;13454:38;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;13588:13;13533:25;:38;13559:11;13533:38;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;12842:775;;;;;;;;;;:::o;14691:379::-;14777:7;14786;14812:26;14831:6;14812:18;:26::i;:::-;14804:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14868:52;;:::i;:::-;14923:30;:38;14954:6;14923:38;;;;;;;;;;;14868:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14996:13;:23;;;15030:13;:23;;;14970:92;;;;;14691:379;;;:::o;3844:148::-;3926:4;3950:34;3975:8;;3950:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3950:34:0;;;;;;:24;:34::i;:::-;3943:41;;3844:148;;;;:::o;15780:447::-;15874:7;15883;15892:4;15915:26;15934:6;15915:18;:26::i;:::-;15907:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15971:60;;:::i;:::-;16034:38;:46;16073:6;16034:46;;;;;;;;;;;15971:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16115:13;:23;;;16149:13;:23;;;16183:13;:27;;;16089:130;;;;;;;15780:447;;;;;:::o;15078:690::-;15368:73;15392:8;;15368:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15368:73:0;;;;;;15402:1;15405:7;15414:14;15430:10;15368:23;:73::i;:::-;15452:19;15474:24;15489:8;;15474:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;15474:24:0;;;;;;:14;:24::i;:::-;15452:46;;15575:9;15511:38;:51;15550:11;15511:51;;;;;;;;;;;:61;;;:73;;;;;;;;;;;;;;;;;;15659:9;15595:38;:51;15634:11;15595:51;;;;;;;;;;;:61;;:73;;;;15747:13;15679:38;:51;15718:11;15679:51;;;;;;;;;;;:65;;;:81;;;;;;;;;;;;;;;;;;15078:690;;;;;;;;;:::o;18817:526::-;18905:7;18914;18923:4;18929;18935;18958:26;18977:6;18958:18;:26::i;:::-;18950:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19014:54;;:::i;:::-;19071:32;:40;19104:6;19071:40;;;;;;;;;;;19014:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19146:13;:23;;;19180:13;:23;;;19214:13;:27;;;19252:13;:27;;;19290:13;:36;;;19120:215;;;;;;;;;;;18817:526;;;;;;;:::o;16235:1045::-;16612:73;16636:8;;16612:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16612:73:0;;;;;;16646:1;16649:7;16658:14;16674:10;16612:23;:73::i;:::-;16696:19;16718:24;16733:8;;16718:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;16718:24:0;;;;;;:14;:24::i;:::-;16696:46;;16825:9;16771:28;:41;16800:11;16771:41;;;;;;;;;;;:51;;:63;;;;16899:9;16845:28;:41;16874:11;16845:41;;;;;;;;;;;:51;;:63;;;;16977:13;16919:28;:41;16948:11;16919:41;;;;;;;;;;;:55;;;:71;;;;;;;;;;;;;;;;;;17059:13;17001:28;:41;17030:11;17001:41;;;;;;;;;;;:55;;;:71;;;;;;;;;;;;;;;;;;17150:22;17083:28;:41;17112:11;17083:41;;;;;;;;;;;:64;;;:89;;;;;;;;;;;;;;;;;;17250:22;17183:28;:41;17212:11;17183:41;;;;;;;;;;;:64;;;:89;;;;;;;;;;;;;;;;;;16235:1045;;;;;;;;;;;;:::o;5137:113::-;5198:5;5221:21;5235:6;5221:13;:21::i;:::-;5214:28;;5137:113;;;:::o;14119:556::-;14362:73;14386:8;;14362:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;14362:73:0;;;;;;14396:1;14399:7;14408:14;14424:10;14362:23;:73::i;:::-;14446:19;14468:24;14483:8;;14468:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;14468:24:0;;;;;;:14;:24::i;:::-;14446:46;;14582:9;14526:30;:43;14557:11;14526:43;;;;;;;;;;;:53;;;:65;;;;;;;;;;;;;;;;;;14658:9;14602:30;:43;14633:11;14602:43;;;;;;;;;;;:53;;;:65;;;;;;;;;;;;;;;;;;14119:556;;;;;;;;:::o;1718:140::-;1119:9;:7;:9::i;:::-;1111:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:1;1780:40;;1801:6;;;;;;;;;;;1780:40;;;;;;;;;;;;1848:1;1831:6;;:19;;;;;;;;;;;;;;;;;;1718:140::o;17290:567::-;17374:7;17383;17392:4;17398;17404;17410;17433:26;17452:6;17433:18;:26::i;:::-;17425:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17489:50;;:::i;:::-;17542:28;:36;17571:6;17542:36;;;;;;;;;;;17489:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17613:13;:23;;;17647:13;:23;;;17681:13;:27;;;17719:13;:27;;;17757:13;:36;;;17804:13;:36;;;17587:262;;;;;;;;;;;;;17290:567;;;;;;;:::o;13633:474::-;13714:7;13723;13732:4;13738;13775:26;13794:6;13775:18;:26::i;:::-;13767:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13831:47;;:::i;:::-;13881:25;:33;13907:6;13881:33;;;;;;;;;;;13831:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13949:13;:23;;;13983:13;:23;;;14017:13;:27;;;14055:13;:27;;;13923:176;;;;;;;;;13633:474;;;;;:::o;907:79::-;945:7;972:6;;;;;;;;;;;965:13;;907:79;:::o;1273:92::-;1313:4;1351:6;;;;;;;;;;;1337:20;;:10;:20;;;1330:27;;1273:92;:::o;4798:327::-;4867:7;4901:14;:21;;;;4893:5;:29;4885:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4954:22;4979:14;4994:5;4979:21;;;;;;;;;;;;;;;;;4954:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5018:34;5043:8;5018:24;:34::i;:::-;5010:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5089:18;5108:8;5089:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5089:28:0;;;;;;;;;;;;;;;;;;;;;;5082:35;;;4798:327;;;:::o;19351:828::-;19665:73;19689:8;;19665:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19665:73:0;;;;;;19699:1;19702:7;19711:14;19727:10;19665:23;:73::i;:::-;19749:19;19771:24;19786:8;;19771:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19771:24:0;;;;;;:14;:24::i;:::-;19749:46;;19882:9;19820:36;:49;19857:11;19820:49;;;;;;;;;;;:59;;:71;;;;19964:9;19902:36;:49;19939:11;19902:49;;;;;;;;;;;:59;;;:71;;;;;;;;;;;;;;;;;;20050:13;19984:36;:49;20021:11;19984:49;;;;;;;;;;;:63;;;:79;;;;;;;;;;;;;;;;;;20149:22;20074:36;:49;20111:11;20074:49;;;;;;;;;;;:72;;;:97;;;;;;;;;;;;;;;;;;19351:828;;;;;;;;;;:::o;5262:355::-;5336:7;5345;5354;5372:46;;:::i;:::-;5421:31;5445:6;5421:23;:31::i;:::-;5372:80;;5487:19;:27;;;5525:19;:34;;;5570:19;:30;;;5461:148;;;;;;;5262:355;;;;;:::o;4475:315::-;4546:13;4586:14;:21;;;;4578:5;:29;4570:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4639:22;4664:14;4679:5;4664:21;;;;;;;;;;;;;;;;;4639:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4703:34;4728:8;4703:24;:34::i;:::-;4695:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4774:8;4767:15;;;4475:315;;;:::o;17865:936::-;18208:73;18232:8;;18208:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18208:73:0;;;;;;18242:1;18245:7;18254:14;18270:10;18208:23;:73::i;:::-;18292:19;18314:24;18329:8;;18314:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18314:24:0;;;;;;:14;:24::i;:::-;18292:46;;18422:9;18364:32;:45;18397:11;18364:45;;;;;;;;;;;:55;;:67;;;;18500:9;18442:32;:45;18475:11;18442:45;;;;;;;;;;;:55;;:67;;;;18582:13;18520:32;:45;18553:11;18520:45;;;;;;;;;;;:59;;;:75;;;;;;;;;;;;;;;;;;18668:13;18606:32;:45;18639:11;18606:45;;;;;;;;;;;:59;;;:75;;;;;;;;;;;;;;;;;;18763:22;18692:32;:45;18725:11;18692:45;;;;;;;;;;;:68;;;:93;;;;;;;;;;;;;;;;;;17865:936;;;;;;;;;;;:::o;20195:494::-;20287:7;20296;20305:4;20311;20334:26;20353:6;20334:18;:26::i;:::-;20326:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20390:58;;:::i;:::-;20451:36;:44;20488:6;20451:44;;;;;;;;;;;20390:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20530:13;:23;;;20564:13;:23;;;20598:13;:27;;;20636:13;:36;;;20504:177;;;;;;;;;20195:494;;;;;:::o;2013:109::-;1119:9;:7;:9::i;:::-;1111:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2086:28;2105:8;2086:18;:28::i;:::-;2013:109;:::o;4000:124::-;4066:4;4090:26;4109:6;4090:18;:26::i;:::-;4083:33;;4000:124;;;:::o;8532:114::-;8592:9;:7;:9::i;:::-;8584:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8532:114::o;6146:193::-;6208:5;6232:26;6251:6;6232:18;:26::i;:::-;6224:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6295:18;:26;6314:6;6295:26;;;;;;;;;;;:36;;;;;;;;;;;;6288:43;;6146:193;;;:::o;7264:1022::-;7343:19;:17;:19::i;:::-;7381:34;7406:8;7381:24;:34::i;:::-;7373:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7449:14;7466:18;7485:8;7466:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7466:28:0;;;;;;;;;;;;;;;;;;;;;;7449:45;;7511:17;7531;:25;7549:6;7531:25;;;;;;;;;;;;7511:45;;7576:17;:25;7594:6;7576:25;;;;;;;;;;;7569:32;;;7619:18;7638:8;7619:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7619:28:0;;;;;;;;;;;;;;;;;;;;;7612:35;;;7665:18;:26;7684:6;7665:26;;;;;;;;;;;;7658:33;;;;:::i;:::-;7709:18;:26;7728:6;7709:26;;;;;;;;;;;;7702:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7748:17;7768:35;7793:9;7768:24;:35::i;:::-;7748:55;;7820:31;7854:51;7903:1;7879:14;:21;;;;:25;7854:24;:51::i;:::-;7820:85;;7916:23;7942:18;7961:17;7942:37;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7942:37:0;;;;;;;;;;;;;;;;;;;;;;7916:63;;8024:14;8063:1;8039:14;:21;;;;:25;8024:41;;;;;;;;;;;;;;;;;7996:14;8011:9;7996:25;;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8120:3;8076:14;8115:1;8091:14;:21;;;;:25;8076:41;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;:::i;:::-;;8171:9;8134:17;:34;8152:15;8134:34;;;;;;;;;;;:46;;;;8198:14;8237:1;8213:14;:21;;;;:25;8198:41;;;;;;;;;;;;;;;;;;8191:48;;;;:::i;:::-;8250:14;:23;;;;;;;;;;;;:::i;:::-;;7264:1022;;;;;;:::o;5625:146::-;5706:4;5762:1;5730:18;5749:8;5730:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5730:28:0;;;;;;;;;;;;;;;;;;;;;;:33;;5723:40;;5625:146;;;:::o;6347:909::-;6502:19;:17;:19::i;:::-;6541:34;6566:8;6541:24;:34::i;:::-;6540:35;6532:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6644:2;6625:8;6619:22;:27;6611:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6702:18;;:20;;;;;;;;;;;;;6773:14;:21;;;;6733:17;:37;6751:18;;6733:37;;;;;;;;;;;:61;;;;6836:18;;6805;6824:8;6805:28;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6805:28:0;;;;;;;;;;;;;;;;;;;;;:49;;;;6906:8;6865:18;:38;6884:18;;6865:38;;;;;;;;;;;:49;;;;;;;;;;;;:::i;:::-;;6925:14;6945:8;6925:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;6925:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7018:9;6967:18;:38;6986:18;;6967:38;;;;;;;;;;;:48;;;:60;;;;;;;;;;;;;;;;;;7087:7;7038:18;:38;7057:18;;7038:38;;;;;;;;;;;:46;;:56;;;;7161:14;7105:18;:38;7124:18;;7105:38;;;;;;;;;;;:53;;:70;;;;7238:10;7186:18;:38;7205:18;;7186:38;;;;;;;;;;;:49;;:62;;;;6347:909;;;;;:::o;5779:209::-;5846:4;5863:32;5904:18;:26;5923:6;5904:26;;;;;;;;;;;5863:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5979:1;5949:19;:26;:31;;5942:38;;;5779:209;;;:::o;8310:214::-;8382:26;;:::i;:::-;8427;8446:6;8427:18;:26::i;:::-;8419:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8490:18;:26;8509:6;8490:26;;;;;;;;;;;8483:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8310:214;;;:::o;2228:229::-;2322:1;2302:22;;:8;:22;;;;2294:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:8;2383:38;;2404:6;;;;;;;;;;;2383:38;;;;;;;;;;;;2441:8;2432:6;;:17;;;;;;;;;;;;;;;;;;2228:229;:::o;5996:142::-;6072:13;6105:14;6120:9;6105:25;;;;;;;;;;;;;;;;;6098:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5996:142;;;:::o;10076:10616::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o

Swarm Source

bzzr://7bd4b4f60b1b5b274671f56de77b595229bc8f88a9e6a6890b1c88f2220d7c53

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.