{
  "_format": "hh-sol-artifact-1",
  "contractName": "BullRunOld",
  "sourceName": "contracts/bullRonOld.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        }
      ],
      "name": "BatchMetadataUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "MetadataUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_cointAddres",
          "type": "address"
        }
      ],
      "name": "addCoin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        }
      ],
      "name": "addNft",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bull_token",
      "outputs": [
        {
          "internalType": "contract BullRunToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_listId",
          "type": "uint256"
        }
      ],
      "name": "buyNft",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimBuyReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "claimProfit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimRankReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "coin_list",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_profile",
          "type": "address"
        }
      ],
      "name": "getMyRankReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "global_pool",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IUniswapV2Router02",
          "name": "_swapRouter",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_usdt",
          "type": "address"
        },
        {
          "internalType": "contract Valhalla",
          "name": "_valhalla",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_reserve1",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_reserve2",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nft_assets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "nft_list",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "profile",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "buy_reward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "claim_at",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserve1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserve2",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract BullRunToken",
          "name": "_bullTokenAddress",
          "type": "address"
        }
      ],
      "name": "setBullToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startStopProfit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "swapRouter",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router02",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "swap_paths",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "total_coin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "total_list",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "usdt",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valhalla",
      "outputs": [
        {
          "internalType": "contract Valhalla",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "wdUSDT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6140f580620000f36000396000f3fe608060405234801561001057600080fd5b506004361061020f5760003560e01c806301ffc9a71461021457806306fdde031461023c578063081812fc14610251578063095ea7b3146102715780630a2a6e37146102865780631459457a1461029a5780631497e7cb146102ad57806316da8632146102c057806318160ddd146102d35780631ee15a78146102e5578063206b0dc3146102ef57806323b872dd14610302578063243adbdd146103155780632f48ab7d146103285780632f745c591461033c5780633518ab6f1461034f57806337b8b1701461036f5780633a4594b1146103905780633b477ed0146103a457806342842e0e146103b757806342966c68146103ca5780634f6ccce7146103dd57806358f3744d146103f05780635a76f25e146103f85780635c0b9a2b1461040c57806360bada0f146104205780636352211e1461043357806370a0823114610446578063715018a61461045957806373407f871461046157806376f7ecd91461048d5780638da5cb5b1461049557806395d89b411461049d5780639db0f9e4146104a55780639dd9d0fd146104b8578063a22cb46514610503578063a8a0ce6c14610516578063b88d4fde14610520578063c31c9c0714610533578063c415bf3d14610547578063c87b56dd1461054f578063d22dee4814610562578063e985e9c514610575578063f2fde38b14610588578063f3a880581461059b575b600080fd5b610227610222366004613670565b6105c5565b60405190151581526020015b60405180910390f35b6102446105d6565b60405161023391906136dd565b61026461025f3660046136f0565b610668565b6040516102339190613709565b61028461027f366004613732565b61068f565b005b61016554610264906001600160a01b031681565b6102846102a836600461375e565b6107a9565b6102646102bb3660046137cf565b610a08565b6102846102ce366004613810565b610a4e565b6099545b604051908152602001610233565b6102d76101615481565b6102846102fd3660046136f0565b610a9a565b6102846103103660046137cf565b610aed565b6102846103233660046136f0565b610b1f565b61016454610264906001600160a01b031681565b6102d761034a366004613732565b611011565b6101605461035d9060ff1681565b60405160ff9091168152602001610233565b6102d761037d3660046136f0565b61016d6020526000908152604090205481565b61016654610264906001600160a01b031681565b6102846103b23660046136f0565b6110a7565b6102846103c53660046137cf565b6111e6565b6102846103d83660046136f0565b611201565b6102d76103eb3660046136f0565b611232565b6102846112c5565b61016754610264906001600160a01b031681565b61016854610264906001600160a01b031681565b61028461042e366004613810565b6113a5565b6102646104413660046136f0565b611424565b6102d7610454366004613810565b611458565b6102846114de565b6102d761046f36600461382d565b61016b60209081526000928352604080842090915290825290205481565b6102846114f2565b61026461150f565b61024461151f565b6102d76104b3366004613810565b61152e565b6104e86104c6366004613810565b61016f6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610233565b61028461051136600461386b565b61174a565b6102d76101625481565b61028461052e3660046138df565b611755565b61016354610264906001600160a01b031681565b61028461178d565b61024461055d3660046136f0565b611bb0565b6102846105703660046136f0565b611bbb565b6102276105833660046139a2565b611e85565b610284610596366004613810565b611eb3565b6102646105a93660046136f0565b61016e602052600090815260409020546001600160a01b031681565b60006105d082611f29565b92915050565b6060606580546105e5906139d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610611906139d0565b801561065e5780601f106106335761010080835404028352916020019161065e565b820191906000526020600020905b81548152906001019060200180831161064157829003601f168201915b5050505050905090565b600061067382611f4e565b506000908152606960205260409020546001600160a01b031690565b600061069a82611424565b9050806001600160a01b0316836001600160a01b03160361070c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061072857506107288133611e85565b61079a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610703565b6107a48383611f73565b505050565b600054610100900460ff16158080156107c95750600054600160ff909116105b806107ea57506107d830611fe1565b1580156107ea575060005460ff166001145b61084d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610703565b6000805460ff191660011790558015610870576000805461ff0019166101001790555b6108b560405180604001604052806007815260200166213ab636293ab760c91b815250604051806040016040528060048152602001632126292760e11b815250611ff0565b6108bd612021565b6108c5612021565b6108cd612021565b6108d5612048565b61016380546001600160a01b03199081166001600160a01b03898116919091179092556101648054821688841617905561016580548216878416179055610167805482168684161790556101688054909116918416919091179055604080516101e081018252600a8152600760208201526004918101919091526003606082018190526080820152600260a0820181905260c0820181905260e08201526001610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c08201526109b99061016990600f6135bf565b508015610a00576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61016c6020528260005260406000206020528160005260406000208181548110610a3157600080fd5b6000918252602090912001546001600160a01b0316925083915050565b610a56612077565b6101618054600081815261016e6020526040812080546001600160a01b0319166001600160a01b0386161790558254919290610a9183613a20565b91905055505050565b610aa2612077565b610160805460ff908116600081815261016d60205260408120859055835491939190921691610ad083613a39565b91906101000a81548160ff021916908360ff160217905550505050565b610af8335b826120d6565b610b145760405162461bcd60e51b815260040161070390613a58565b6107a4838383612135565b61016554604051630fa2d9ff60e41b81526000916001600160a01b03169063fa2d9ff090610b51903390600401613709565b61010060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b939190613aa5565b50959650869550610be79450505050505760405162461bcd60e51b815260206004820152601860248201527713db9b1e4813995d1ddbdc9ac810d85b88189d5e4813999d60421b6044820152606401610703565b600082815261016d602052604090205461016154610c3a5760405162461bcd60e51b815260206004820152601060248201526f18dbda5b881b9bdd081cd95d081e595d60821b6044820152606401610703565b610164546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190613b2f565b610cf95760405162461bcd60e51b81526020600482015260146024820152732a3930b739b332b9233937b6903330b4b632b21760611b6044820152606401610703565b610164546101635460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610d31929116908590600401613b4c565b6020604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d749190613b2f565b610d905760405162461bcd60e51b815260040161070390613b65565b61015f805460009182610da283613a20565b919050559050610db23382612294565b610dc481610dbf866122ae565b612341565b600080610dd133856123fd565b61016654604051632d296bf160e01b8152600481018490529294509092506001600160a01b031690632d296bf190602401600060405180830381600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b5050610166546040516307fa648b60e11b815260048101869052600093506001600160a01b039091169150630ff4c91690602401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190613b8e565b600085815261016b6020908152604080832061016680546001600160a01b0390811686529190935292819020849055610164549154905163a9059cbb60e01b81529394509082169263a9059cbb92610f039216908790600401613b4c565b6020604051808303816000875af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190613b2f565b5060006101615483610f589190613ba7565b905060005b610161548110156110065761016454600082815261016e6020526040902054606091610f989185916001600160a01b0390811691163061278d565b90508060018251610fa99190613bc9565b81518110610fb957610fb9613bdc565b602090810291909101810151600089815261016b8352604080822086835261016e8552818320546001600160a01b0316835290935291909120555080610ffe81613a20565b915050610f5d565b505050505050505050565b600061101c83611458565b821061107e5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610703565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6110af612077565b610164546040516370a0823160e01b81526001600160a01b03909116906370a08231906110e0903090600401613709565b602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111219190613b8e565b81111561116c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344542062616c616e636560381b6044820152606401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061119f9033908590600401613b4c565b6020604051808303816000875af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e29190613b2f565b5050565b6107a483838360405180602001604052806000815250611755565b61120a33610af2565b6112265760405162461bcd60e51b815260040161070390613a58565b61122f816128ba565b50565b600061123d60995490565b82106112a05760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610703565b609982815481106112b3576112b3613bdc565b90600052602060002001549050919050565b33600090815261016f6020526040902060010154806113175760405162461bcd60e51b815260206004820152600e60248201526d1b9bc81c995dd85c99081b19599d60921b6044820152606401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061134a9033908590600401613b4c565b6020604051808303816000875af1158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190613b2f565b505033600090815261016f6020526040812060010155565b6113ad612077565b610166546001600160a01b038083169116036114015760405162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b6044820152606401610703565b61016680546001600160a01b0319166001600160a01b0392909216919091179055565b600080611430836128c3565b90506001600160a01b0381166105d05760405162461bcd60e51b815260040161070390613bf2565b60006001600160a01b0382166114c25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610703565b506001600160a01b031660009081526068602052604090205490565b6114e6612077565b6114f060006128de565b565b6114fa612077565b61016a805460ff19811660ff90911615179055565b61012d546001600160a01b031690565b6060606680546105e5906139d0565b600080600080600080600061016560009054906101000a90046001600160a01b03166001600160a01b031663d35cb1ad6040518163ffffffff1660e01b815260040160c060405180830381865afa15801561158d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b19190613c24565b61016554604051630fa2d9ff60e41b8152969c50949a50929850909650945092506000916001600160a01b039091169063fa2d9ff0906115f5908c90600401613709565b61010060405180830381865afa158015611613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116379190613aa5565b509396506000955087945088935089925061165691508a90508b613c6e565b6116609190613c6e565b61166a9190613c6e565b6116749190613c6e565b90506000606461016254602861168a9190613c81565b6116949190613ba7565b9050600081610162546116a79190613bc9565b905060018460068111156116bd576116bd613c98565b036116f957896000036116dc575060009b9a5050505050505050505050565b60006116e88b84613ba7565b9d9c50505050505050505050505050565b600084600681111561170d5761170d613c98565b14611738578260000361172c575060009b9a5050505050505050505050565b60006116e88483613ba7565b5060009b9a5050505050505050505050565b6111e2338383612931565b61175f33836120d6565b61177b5760405162461bcd60e51b815260040161070390613a58565b611787848484846129fb565b50505050565b61016560009054906101000a90046001600160a01b03166001600160a01b0316636ae994a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118059190613b2f565b6118475760405162461bcd60e51b81526020600482015260136024820152721c985b9ac81a185cdb89dd081cdd185c9d1959606a1b6044820152606401610703565b610165546040805163238d642760e11b815290516000926001600160a01b03169163471ac84e9160048083019260209291908290030181865afa158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190613b8e565b33600090815261016f602052604090206002015490915081116119165760405162461bcd60e51b8152602060048201526018602482015277165bdd48185b1c9958591e4818db185a5b4814995dd85c9960421b6044820152606401610703565b60006119213361152e565b61016554604051630fa2d9ff60e41b81529192506000916001600160a01b039091169063fa2d9ff090611958903390600401613709565b61010060405180830381865afa158015611976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199a9190613aa5565b505033600090815261016f60205260408120426002909101559396509294506119c39350505050565b8160068111156119d5576119d5613c98565b03611a1a5760405162461bcd60e51b8152602060048201526015602482015274109bdbdcdd08165bdd5c8814985b9ac8119a5c9cdd605a1b6044820152606401610703565b6001816006811115611a2e57611a2e613c98565b03611b205733600090815261016f6020526040902054633b9aca001115611aaa5760405162461bcd60e51b815260206004820152602a60248201527f526571756972652031303030204e46542056616c756520546f20636c61696d206044820152691d1a194814995dd85c9960b21b6064820152608401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611add9033908690600401613b4c565b6020604051808303816000875af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117879190613b2f565b6000816006811115611b3457611b34613c98565b146107a45733600090815261016f6020526040902054633b9aca001115611aaa5760405162461bcd60e51b815260206004820152602a60248201527f526571756972652033303030204e46542056616c756520546f20636c61696d206044820152691d1a194814995dd85c9960b21b6064820152608401610703565b60606105d082612a2e565b61016a5460ff16611c0e5760405162461bcd60e51b815260206004820152601d60248201527f636c61696d2070726f666974206469646e2774207374617274207965740000006044820152606401610703565b33611c1882611424565b6001600160a01b031614611c5e5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b6044820152606401610703565b600081815261016b60209081526040808320610166546001600160a01b031680855292529182902054915163a9059cbb60e01b815263a9059cbb90611ca99033908590600401613b4c565b6020604051808303816000875af1158015611cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cec9190613b2f565b5060005b61016154811015611e7b57600083815261016b6020908152604080832084845261016e8352818420546001600160a01b031684529091529020548015611e685760006064611d3f83600a613c81565b611d499190613ba7565b9050611d7f611d588284613bc9565b600085815261016e6020526040902054610164546001600160a01b0391821691163361278d565b50600083815261016e602052604081205461016454611dad9184916001600160a01b0391821691163061278d565b905060008160018351611dc09190613bc9565b81518110611dd057611dd0613bdc565b602002602001015190506000600282611de99190613ba7565b610167546001600160a01b0316600090815261016f602052604090206001018190559050611e178183613bc9565b610168546001600160a01b03908116600090815261016f60209081526040808320600101949094558b825261016b81528382208a835261016e82528483205490931682529190915290812055505050505b5080611e7381613a20565b915050611cf0565b506111e2826128ba565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b611ebb612077565b6001600160a01b038116611f205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610703565b61122f816128de565b60006001600160e01b03198216632483248360e11b14806105d057506105d082612b29565b611f5781612b4e565b61122f5760405162461bcd60e51b815260040161070390613bf2565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611fa882611424565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b03163b151590565b600054610100900460ff166120175760405162461bcd60e51b815260040161070390613cae565b6111e28282612b6b565b600054610100900460ff166114f05760405162461bcd60e51b815260040161070390613cae565b600054610100900460ff1661206f5760405162461bcd60e51b815260040161070390613cae565b6114f0612bab565b3361208061150f565b6001600160a01b0316146114f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610703565b6000806120e283611424565b9050806001600160a01b0316846001600160a01b0316148061210957506121098185611e85565b8061212d5750836001600160a01b031661212284610668565b6001600160a01b0316145b949350505050565b826001600160a01b031661214882611424565b6001600160a01b03161461216e5760405162461bcd60e51b815260040161070390613cf9565b6001600160a01b0382166121d05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610703565b6121dd8383836001612bdb565b826001600160a01b03166121f082611424565b6001600160a01b0316146122165760405162461bcd60e51b815260040161070390613cf9565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184936000805160206140a083398151915291a4505050565b6111e2828260405180602001604052806000815250612c9d565b606060006122bb83612cd0565b60010190506000816001600160401b038111156122da576122da613899565b6040519080825280601f01601f191660200182016040528015612304576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461230e575b509392505050565b61234a82612b4e565b6123ad5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610703565b600082815260c9602052604090206123c58282613d84565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000808080806064612410876014613c81565b61241a9190613ba7565b905060006103e861242d88610108613c81565b6124379190613ba7565b905060006103e8612449896088613c81565b6124539190613ba7565b9050876124608382613bc9565b905061246c8282613bc9565b90506124788482613bc9565b905083610162600082825461248d9190613c6e565b909155505061016554604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff0906124c3908d90600401613709565b61010060405180830381865afa1580156124e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125059190613aa5565b50939b5091995060009450505050505b610169548110156126f1576001600160a01b038616156126f15760006064610169838154811061254757612547613bdc565b90600052602060002001548c61255d9190613c81565b6125679190613ba7565b6001600160a01b038816600090815261016f602052604090209091506007831180156125a5575060028960068111156125a2576125a2613c98565b10155b156125d157818160010160008282546125be9190613c6e565b909155506125ce90508285613bc9565b93505b6002831180156125e15750600883105b80156125fe575060018960068111156125fc576125fc613c98565b145b1561262a57818160010160008282546126179190613c6e565b9091555061262790508285613bc9565b93505b600383101561265a57818160010160008282546126479190613c6e565b9091555061265790508285613bc9565b93505b61016554604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff09061268b908b90600401613709565b61010060405180830381865afa1580156126a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cd9190613aa5565b50939e50919c508796506126e99550869450613a209350505050565b915050612515565b5060006126ff600283613ba7565b610167546001600160a01b0316600090815261016f6020526040812060010180549293508392909190612733908490613c6e565b9091555061274390508183613bc9565b610168546001600160a01b0316600090815261016f6020526040812060010180549294508492909190612777908490613c6e565b90915550929b939a509298505050505050505050565b6101635460405163095ea7b360e01b81526060916001600160a01b038087169263095ea7b3926127c39216908990600401613b4c565b6020604051808303816000875af11580156127e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128069190613b2f565b6128225760405162461bcd60e51b815260040161070390613b65565b600061282e8585612da6565b610163546040516338ed173960e01b81529192506001600160a01b0316906338ed173990612869908990600090869089904290600401613e43565b6000604051808303816000875af1158015612888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b09190810190613eb4565b9695505050505050565b61122f81612ebd565b6000908152606760205260409020546001600160a01b031690565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361298e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610703565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a06848484612135565b612a1284848484612efd565b6117875760405162461bcd60e51b815260040161070390613f59565b6060612a3982611f4e565b600082815260c9602052604081208054612a52906139d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a7e906139d0565b8015612acb5780601f10612aa057610100808354040283529160200191612acb565b820191906000526020600020905b815481529060010190602001808311612aae57829003601f168201915b505050505090506000612adc613002565b90508051600003612aee575092915050565b815115612b20578082604051602001612b08929190613fab565b60405160208183030381529060405292505050919050565b61212d84613022565b60006001600160e01b0319821663780e9d6360e01b14806105d057506105d082613088565b600080612b5a836128c3565b6001600160a01b0316141592915050565b600054610100900460ff16612b925760405162461bcd60e51b815260040161070390613cae565b6065612b9e8382613d84565b5060666107a48282613d84565b600054610100900460ff16612bd25760405162461bcd60e51b815260040161070390613cae565b6114f0336128de565b600082815261016d60205260409020546001600160a01b038516612c2d576001600160a01b038416600090815261016f602052604081208054839290612c22908490613c6e565b90915550612c8a9050565b6001600160a01b038516600090815261016f602052604081208054839290612c56908490613bc9565b90915550506001600160a01b038416600090815261016f602052604081208054839290612c84908490613c6e565b90915550505b612c96858585856130d8565b5050505050565b612ca78383613205565b612cb46000848484612efd565b6107a45760405162461bcd60e51b815260040161070390613f59565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d0f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612d39576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310612d5757662386f26fc10000830492506010015b6305f5e1008310612d6f576305f5e100830492506008015b6127108310612d8357612710830492506004015b60648310612d95576064830492506002015b600a83106105d05760010192915050565b6001600160a01b03808316600090815261016c602090815260408083209385168352928152828220805484518184028101840190955280855260609492830182828015612e1c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612dfe575b505050505090508051600003612eb6576040805160028082526060820183526000926020830190803683370190505090508481600081518110612e6157612e61613bdc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110612e9557612e95613bdc565b6001600160a01b039092166020928302919091019091015291506105d09050565b9392505050565b612ec68161330e565b600081815260c9602052604090208054612edf906139d0565b15905061122f57600081815260c96020526040812061122f9161360f565b6000612f11846001600160a01b0316611fe1565b15612ffa57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f48903390899088908890600401613fda565b6020604051808303816000875af1925050508015612f83575060408051601f3d908101601f19168201909252612f809181019061400d565b60015b612fe0573d808015612fb1576040519150601f19603f3d011682016040523d82523d6000602084013e612fb6565b606091505b508051600003612fd85760405162461bcd60e51b815260040161070390613f59565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061212d565b50600161212d565b606060405180606001604052806029815260200161407760299139905090565b606061302d82611f4e565b6000613037613002565b905060008151116130575760405180602001604052806000815250612eb6565b806130618461339f565b604051602001613072929190613fab565b6040516020818303038152906040529392505050565b60006001600160e01b031982166380ac58cd60e01b14806130b957506001600160e01b03198216635b5e139f60e01b145b806105d057506301ffc9a760e01b6001600160e01b03198316146105d0565b60018111156131475760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610703565b816001600160a01b0385166131a35761319e81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6131c6565b836001600160a01b0316856001600160a01b0316146131c6576131c6858261342f565b6001600160a01b0384166131e2576131dd816134cc565b612c96565b846001600160a01b0316846001600160a01b031614612c9657612c96848261357b565b6001600160a01b03821661325b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610703565b61326481612b4e565b156132815760405162461bcd60e51b81526004016107039061402a565b61328f600083836001612bdb565b61329881612b4e565b156132b55760405162461bcd60e51b81526004016107039061402a565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291906000805160206140a0833981519152908290a45050565b600061331982611424565b9050613329816000846001612bdb565b61333282611424565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084926000805160206140a0833981519152908390a45050565b606060006133ac83612cd0565b60010190506000816001600160401b038111156133cb576133cb613899565b6040519080825280601f01601f1916602001820160405280156133f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508415612339576133ff565b6000600161343c84611458565b6134469190613bc9565b600083815260986020526040902054909150808214613499576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906134de90600190613bc9565b6000838152609a60205260408120546099805493945090928490811061350657613506613bdc565b90600052602060002001549050806099838154811061352757613527613bdc565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061355f5761355f614060565b6001900381819060005260206000200160009055905550505050565b600061358683611458565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280548282559060005260206000209081019282156135ff579160200282015b828111156135ff578251829060ff169055916020019190600101906135df565b5061360b929150613645565b5090565b50805461361b906139d0565b6000825580601f1061362b575050565b601f01602090049060005260206000209081019061122f91905b5b8082111561360b5760008155600101613646565b6001600160e01b03198116811461122f57600080fd5b60006020828403121561368257600080fd5b8135612eb68161365a565b60005b838110156136a8578181015183820152602001613690565b50506000910152565b600081518084526136c981602086016020860161368d565b601f01601f19169290920160200192915050565b602081526000612eb660208301846136b1565b60006020828403121561370257600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461122f57600080fd5b6000806040838503121561374557600080fd5b82356137508161371d565b946020939093013593505050565b600080600080600060a0868803121561377657600080fd5b85356137818161371d565b945060208601356137918161371d565b935060408601356137a18161371d565b925060608601356137b18161371d565b915060808601356137c18161371d565b809150509295509295909350565b6000806000606084860312156137e457600080fd5b83356137ef8161371d565b925060208401356137ff8161371d565b929592945050506040919091013590565b60006020828403121561382257600080fd5b8135612eb68161371d565b6000806040838503121561384057600080fd5b8235915060208301356138528161371d565b809150509250929050565b801515811461122f57600080fd5b6000806040838503121561387e57600080fd5b82356138898161371d565b915060208301356138528161385d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138d7576138d7613899565b604052919050565b600080600080608085870312156138f557600080fd5b84356139008161371d565b93506020858101356139118161371d565b93506040860135925060608601356001600160401b038082111561393457600080fd5b818801915088601f83011261394857600080fd5b81358181111561395a5761395a613899565b61396c601f8201601f191685016138af565b9150808252898482850101111561398257600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156139b557600080fd5b82356139c08161371d565b915060208301356138528161371d565b600181811c908216806139e457607f821691505b602082108103613a0457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201613a3257613a32613a0a565b5060010190565b600060ff821660ff8103613a4f57613a4f613a0a565b60010192915050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600080600080600080600080610100898b031215613ac257600080fd5b8851613acd8161385d565b60208a0151909850613ade8161385d565b60408a015190975060078110613af357600080fd5b60608a0151909650613b048161371d565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b600060208284031215613b4157600080fd5b8151612eb68161385d565b6001600160a01b03929092168252602082015260400190565b6020808252600f908201526e20b8383937bb32903330b4b632b21760891b604082015260600190565b600060208284031215613ba057600080fd5b5051919050565b600082613bc457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105d0576105d0613a0a565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008060008060008060c08789031215613c3d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b808201808211156105d0576105d0613a0a565b80820281158282048414176105d0576105d0613a0a565b634e487b7160e01b600052602160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156107a457600081815260208120601f850160051c81016020861015613d655750805b601f850160051c820191505b81811015610a0057828155600101613d71565b81516001600160401b03811115613d9d57613d9d613899565b613db181613dab84546139d0565b84613d3e565b602080601f831160018114613de65760008415613dce5750858301515b600019600386901b1c1916600185901b178555610a00565b600085815260208120601f198616915b82811015613e1557888601518255948401946001909101908401613df6565b5085821015613e335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e935784516001600160a01b031683529383019391830191600101613e6e565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215613ec757600080fd5b82516001600160401b0380821115613ede57600080fd5b818501915085601f830112613ef257600080fd5b815181811115613f0457613f04613899565b8060051b9150613f158483016138af565b8181529183018401918481019088841115613f2f57600080fd5b938501935b83851015613f4d57845182529385019390850190613f34565b98975050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613fbd81846020880161368d565b835190830190613fd181836020880161368d565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128b0908301846136b1565b60006020828403121561401f57600080fd5b8151612eb68161365a565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f7777772e676c6f62616c6e6574776f726b2e66696e616e63652f6572633732312fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203ad3297571f6cb0b434e9c105f2ccb8f41a7e30f41511c1cece51fb6f478552064736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061020f5760003560e01c806301ffc9a71461021457806306fdde031461023c578063081812fc14610251578063095ea7b3146102715780630a2a6e37146102865780631459457a1461029a5780631497e7cb146102ad57806316da8632146102c057806318160ddd146102d35780631ee15a78146102e5578063206b0dc3146102ef57806323b872dd14610302578063243adbdd146103155780632f48ab7d146103285780632f745c591461033c5780633518ab6f1461034f57806337b8b1701461036f5780633a4594b1146103905780633b477ed0146103a457806342842e0e146103b757806342966c68146103ca5780634f6ccce7146103dd57806358f3744d146103f05780635a76f25e146103f85780635c0b9a2b1461040c57806360bada0f146104205780636352211e1461043357806370a0823114610446578063715018a61461045957806373407f871461046157806376f7ecd91461048d5780638da5cb5b1461049557806395d89b411461049d5780639db0f9e4146104a55780639dd9d0fd146104b8578063a22cb46514610503578063a8a0ce6c14610516578063b88d4fde14610520578063c31c9c0714610533578063c415bf3d14610547578063c87b56dd1461054f578063d22dee4814610562578063e985e9c514610575578063f2fde38b14610588578063f3a880581461059b575b600080fd5b610227610222366004613670565b6105c5565b60405190151581526020015b60405180910390f35b6102446105d6565b60405161023391906136dd565b61026461025f3660046136f0565b610668565b6040516102339190613709565b61028461027f366004613732565b61068f565b005b61016554610264906001600160a01b031681565b6102846102a836600461375e565b6107a9565b6102646102bb3660046137cf565b610a08565b6102846102ce366004613810565b610a4e565b6099545b604051908152602001610233565b6102d76101615481565b6102846102fd3660046136f0565b610a9a565b6102846103103660046137cf565b610aed565b6102846103233660046136f0565b610b1f565b61016454610264906001600160a01b031681565b6102d761034a366004613732565b611011565b6101605461035d9060ff1681565b60405160ff9091168152602001610233565b6102d761037d3660046136f0565b61016d6020526000908152604090205481565b61016654610264906001600160a01b031681565b6102846103b23660046136f0565b6110a7565b6102846103c53660046137cf565b6111e6565b6102846103d83660046136f0565b611201565b6102d76103eb3660046136f0565b611232565b6102846112c5565b61016754610264906001600160a01b031681565b61016854610264906001600160a01b031681565b61028461042e366004613810565b6113a5565b6102646104413660046136f0565b611424565b6102d7610454366004613810565b611458565b6102846114de565b6102d761046f36600461382d565b61016b60209081526000928352604080842090915290825290205481565b6102846114f2565b61026461150f565b61024461151f565b6102d76104b3366004613810565b61152e565b6104e86104c6366004613810565b61016f6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610233565b61028461051136600461386b565b61174a565b6102d76101625481565b61028461052e3660046138df565b611755565b61016354610264906001600160a01b031681565b61028461178d565b61024461055d3660046136f0565b611bb0565b6102846105703660046136f0565b611bbb565b6102276105833660046139a2565b611e85565b610284610596366004613810565b611eb3565b6102646105a93660046136f0565b61016e602052600090815260409020546001600160a01b031681565b60006105d082611f29565b92915050565b6060606580546105e5906139d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610611906139d0565b801561065e5780601f106106335761010080835404028352916020019161065e565b820191906000526020600020905b81548152906001019060200180831161064157829003601f168201915b5050505050905090565b600061067382611f4e565b506000908152606960205260409020546001600160a01b031690565b600061069a82611424565b9050806001600160a01b0316836001600160a01b03160361070c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061072857506107288133611e85565b61079a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610703565b6107a48383611f73565b505050565b600054610100900460ff16158080156107c95750600054600160ff909116105b806107ea57506107d830611fe1565b1580156107ea575060005460ff166001145b61084d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610703565b6000805460ff191660011790558015610870576000805461ff0019166101001790555b6108b560405180604001604052806007815260200166213ab636293ab760c91b815250604051806040016040528060048152602001632126292760e11b815250611ff0565b6108bd612021565b6108c5612021565b6108cd612021565b6108d5612048565b61016380546001600160a01b03199081166001600160a01b03898116919091179092556101648054821688841617905561016580548216878416179055610167805482168684161790556101688054909116918416919091179055604080516101e081018252600a8152600760208201526004918101919091526003606082018190526080820152600260a0820181905260c0820181905260e08201526001610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c08201526109b99061016990600f6135bf565b508015610a00576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61016c6020528260005260406000206020528160005260406000208181548110610a3157600080fd5b6000918252602090912001546001600160a01b0316925083915050565b610a56612077565b6101618054600081815261016e6020526040812080546001600160a01b0319166001600160a01b0386161790558254919290610a9183613a20565b91905055505050565b610aa2612077565b610160805460ff908116600081815261016d60205260408120859055835491939190921691610ad083613a39565b91906101000a81548160ff021916908360ff160217905550505050565b610af8335b826120d6565b610b145760405162461bcd60e51b815260040161070390613a58565b6107a4838383612135565b61016554604051630fa2d9ff60e41b81526000916001600160a01b03169063fa2d9ff090610b51903390600401613709565b61010060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b939190613aa5565b50959650869550610be79450505050505760405162461bcd60e51b815260206004820152601860248201527713db9b1e4813995d1ddbdc9ac810d85b88189d5e4813999d60421b6044820152606401610703565b600082815261016d602052604090205461016154610c3a5760405162461bcd60e51b815260206004820152601060248201526f18dbda5b881b9bdd081cd95d081e595d60821b6044820152606401610703565b610164546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190613b2f565b610cf95760405162461bcd60e51b81526020600482015260146024820152732a3930b739b332b9233937b6903330b4b632b21760611b6044820152606401610703565b610164546101635460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610d31929116908590600401613b4c565b6020604051808303816000875af1158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d749190613b2f565b610d905760405162461bcd60e51b815260040161070390613b65565b61015f805460009182610da283613a20565b919050559050610db23382612294565b610dc481610dbf866122ae565b612341565b600080610dd133856123fd565b61016654604051632d296bf160e01b8152600481018490529294509092506001600160a01b031690632d296bf190602401600060405180830381600087803b158015610e1c57600080fd5b505af1158015610e30573d6000803e3d6000fd5b5050610166546040516307fa648b60e11b815260048101869052600093506001600160a01b039091169150630ff4c91690602401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190613b8e565b600085815261016b6020908152604080832061016680546001600160a01b0390811686529190935292819020849055610164549154905163a9059cbb60e01b81529394509082169263a9059cbb92610f039216908790600401613b4c565b6020604051808303816000875af1158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190613b2f565b5060006101615483610f589190613ba7565b905060005b610161548110156110065761016454600082815261016e6020526040902054606091610f989185916001600160a01b0390811691163061278d565b90508060018251610fa99190613bc9565b81518110610fb957610fb9613bdc565b602090810291909101810151600089815261016b8352604080822086835261016e8552818320546001600160a01b0316835290935291909120555080610ffe81613a20565b915050610f5d565b505050505050505050565b600061101c83611458565b821061107e5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610703565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6110af612077565b610164546040516370a0823160e01b81526001600160a01b03909116906370a08231906110e0903090600401613709565b602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111219190613b8e565b81111561116c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420555344542062616c616e636560381b6044820152606401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061119f9033908590600401613b4c565b6020604051808303816000875af11580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e29190613b2f565b5050565b6107a483838360405180602001604052806000815250611755565b61120a33610af2565b6112265760405162461bcd60e51b815260040161070390613a58565b61122f816128ba565b50565b600061123d60995490565b82106112a05760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610703565b609982815481106112b3576112b3613bdc565b90600052602060002001549050919050565b33600090815261016f6020526040902060010154806113175760405162461bcd60e51b815260206004820152600e60248201526d1b9bc81c995dd85c99081b19599d60921b6044820152606401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061134a9033908590600401613b4c565b6020604051808303816000875af1158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190613b2f565b505033600090815261016f6020526040812060010155565b6113ad612077565b610166546001600160a01b038083169116036114015760405162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b6044820152606401610703565b61016680546001600160a01b0319166001600160a01b0392909216919091179055565b600080611430836128c3565b90506001600160a01b0381166105d05760405162461bcd60e51b815260040161070390613bf2565b60006001600160a01b0382166114c25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610703565b506001600160a01b031660009081526068602052604090205490565b6114e6612077565b6114f060006128de565b565b6114fa612077565b61016a805460ff19811660ff90911615179055565b61012d546001600160a01b031690565b6060606680546105e5906139d0565b600080600080600080600061016560009054906101000a90046001600160a01b03166001600160a01b031663d35cb1ad6040518163ffffffff1660e01b815260040160c060405180830381865afa15801561158d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b19190613c24565b61016554604051630fa2d9ff60e41b8152969c50949a50929850909650945092506000916001600160a01b039091169063fa2d9ff0906115f5908c90600401613709565b61010060405180830381865afa158015611613573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116379190613aa5565b509396506000955087945088935089925061165691508a90508b613c6e565b6116609190613c6e565b61166a9190613c6e565b6116749190613c6e565b90506000606461016254602861168a9190613c81565b6116949190613ba7565b9050600081610162546116a79190613bc9565b905060018460068111156116bd576116bd613c98565b036116f957896000036116dc575060009b9a5050505050505050505050565b60006116e88b84613ba7565b9d9c50505050505050505050505050565b600084600681111561170d5761170d613c98565b14611738578260000361172c575060009b9a5050505050505050505050565b60006116e88483613ba7565b5060009b9a5050505050505050505050565b6111e2338383612931565b61175f33836120d6565b61177b5760405162461bcd60e51b815260040161070390613a58565b611787848484846129fb565b50505050565b61016560009054906101000a90046001600160a01b03166001600160a01b0316636ae994a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118059190613b2f565b6118475760405162461bcd60e51b81526020600482015260136024820152721c985b9ac81a185cdb89dd081cdd185c9d1959606a1b6044820152606401610703565b610165546040805163238d642760e11b815290516000926001600160a01b03169163471ac84e9160048083019260209291908290030181865afa158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190613b8e565b33600090815261016f602052604090206002015490915081116119165760405162461bcd60e51b8152602060048201526018602482015277165bdd48185b1c9958591e4818db185a5b4814995dd85c9960421b6044820152606401610703565b60006119213361152e565b61016554604051630fa2d9ff60e41b81529192506000916001600160a01b039091169063fa2d9ff090611958903390600401613709565b61010060405180830381865afa158015611976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199a9190613aa5565b505033600090815261016f60205260408120426002909101559396509294506119c39350505050565b8160068111156119d5576119d5613c98565b03611a1a5760405162461bcd60e51b8152602060048201526015602482015274109bdbdcdd08165bdd5c8814985b9ac8119a5c9cdd605a1b6044820152606401610703565b6001816006811115611a2e57611a2e613c98565b03611b205733600090815261016f6020526040902054633b9aca001115611aaa5760405162461bcd60e51b815260206004820152602a60248201527f526571756972652031303030204e46542056616c756520546f20636c61696d206044820152691d1a194814995dd85c9960b21b6064820152608401610703565b6101645460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611add9033908690600401613b4c565b6020604051808303816000875af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117879190613b2f565b6000816006811115611b3457611b34613c98565b146107a45733600090815261016f6020526040902054633b9aca001115611aaa5760405162461bcd60e51b815260206004820152602a60248201527f526571756972652033303030204e46542056616c756520546f20636c61696d206044820152691d1a194814995dd85c9960b21b6064820152608401610703565b60606105d082612a2e565b61016a5460ff16611c0e5760405162461bcd60e51b815260206004820152601d60248201527f636c61696d2070726f666974206469646e2774207374617274207965740000006044820152606401610703565b33611c1882611424565b6001600160a01b031614611c5e5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b6044820152606401610703565b600081815261016b60209081526040808320610166546001600160a01b031680855292529182902054915163a9059cbb60e01b815263a9059cbb90611ca99033908590600401613b4c565b6020604051808303816000875af1158015611cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cec9190613b2f565b5060005b61016154811015611e7b57600083815261016b6020908152604080832084845261016e8352818420546001600160a01b031684529091529020548015611e685760006064611d3f83600a613c81565b611d499190613ba7565b9050611d7f611d588284613bc9565b600085815261016e6020526040902054610164546001600160a01b0391821691163361278d565b50600083815261016e602052604081205461016454611dad9184916001600160a01b0391821691163061278d565b905060008160018351611dc09190613bc9565b81518110611dd057611dd0613bdc565b602002602001015190506000600282611de99190613ba7565b610167546001600160a01b0316600090815261016f602052604090206001018190559050611e178183613bc9565b610168546001600160a01b03908116600090815261016f60209081526040808320600101949094558b825261016b81528382208a835261016e82528483205490931682529190915290812055505050505b5080611e7381613a20565b915050611cf0565b506111e2826128ba565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b611ebb612077565b6001600160a01b038116611f205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610703565b61122f816128de565b60006001600160e01b03198216632483248360e11b14806105d057506105d082612b29565b611f5781612b4e565b61122f5760405162461bcd60e51b815260040161070390613bf2565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611fa882611424565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b03163b151590565b600054610100900460ff166120175760405162461bcd60e51b815260040161070390613cae565b6111e28282612b6b565b600054610100900460ff166114f05760405162461bcd60e51b815260040161070390613cae565b600054610100900460ff1661206f5760405162461bcd60e51b815260040161070390613cae565b6114f0612bab565b3361208061150f565b6001600160a01b0316146114f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610703565b6000806120e283611424565b9050806001600160a01b0316846001600160a01b0316148061210957506121098185611e85565b8061212d5750836001600160a01b031661212284610668565b6001600160a01b0316145b949350505050565b826001600160a01b031661214882611424565b6001600160a01b03161461216e5760405162461bcd60e51b815260040161070390613cf9565b6001600160a01b0382166121d05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610703565b6121dd8383836001612bdb565b826001600160a01b03166121f082611424565b6001600160a01b0316146122165760405162461bcd60e51b815260040161070390613cf9565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184936000805160206140a083398151915291a4505050565b6111e2828260405180602001604052806000815250612c9d565b606060006122bb83612cd0565b60010190506000816001600160401b038111156122da576122da613899565b6040519080825280601f01601f191660200182016040528015612304576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461230e575b509392505050565b61234a82612b4e565b6123ad5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610703565b600082815260c9602052604090206123c58282613d84565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6000808080806064612410876014613c81565b61241a9190613ba7565b905060006103e861242d88610108613c81565b6124379190613ba7565b905060006103e8612449896088613c81565b6124539190613ba7565b9050876124608382613bc9565b905061246c8282613bc9565b90506124788482613bc9565b905083610162600082825461248d9190613c6e565b909155505061016554604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff0906124c3908d90600401613709565b61010060405180830381865afa1580156124e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125059190613aa5565b50939b5091995060009450505050505b610169548110156126f1576001600160a01b038616156126f15760006064610169838154811061254757612547613bdc565b90600052602060002001548c61255d9190613c81565b6125679190613ba7565b6001600160a01b038816600090815261016f602052604090209091506007831180156125a5575060028960068111156125a2576125a2613c98565b10155b156125d157818160010160008282546125be9190613c6e565b909155506125ce90508285613bc9565b93505b6002831180156125e15750600883105b80156125fe575060018960068111156125fc576125fc613c98565b145b1561262a57818160010160008282546126179190613c6e565b9091555061262790508285613bc9565b93505b600383101561265a57818160010160008282546126479190613c6e565b9091555061265790508285613bc9565b93505b61016554604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff09061268b908b90600401613709565b61010060405180830381865afa1580156126a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cd9190613aa5565b50939e50919c508796506126e99550869450613a209350505050565b915050612515565b5060006126ff600283613ba7565b610167546001600160a01b0316600090815261016f6020526040812060010180549293508392909190612733908490613c6e565b9091555061274390508183613bc9565b610168546001600160a01b0316600090815261016f6020526040812060010180549294508492909190612777908490613c6e565b90915550929b939a509298505050505050505050565b6101635460405163095ea7b360e01b81526060916001600160a01b038087169263095ea7b3926127c39216908990600401613b4c565b6020604051808303816000875af11580156127e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128069190613b2f565b6128225760405162461bcd60e51b815260040161070390613b65565b600061282e8585612da6565b610163546040516338ed173960e01b81529192506001600160a01b0316906338ed173990612869908990600090869089904290600401613e43565b6000604051808303816000875af1158015612888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128b09190810190613eb4565b9695505050505050565b61122f81612ebd565b6000908152606760205260409020546001600160a01b031690565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361298e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610703565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612a06848484612135565b612a1284848484612efd565b6117875760405162461bcd60e51b815260040161070390613f59565b6060612a3982611f4e565b600082815260c9602052604081208054612a52906139d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a7e906139d0565b8015612acb5780601f10612aa057610100808354040283529160200191612acb565b820191906000526020600020905b815481529060010190602001808311612aae57829003601f168201915b505050505090506000612adc613002565b90508051600003612aee575092915050565b815115612b20578082604051602001612b08929190613fab565b60405160208183030381529060405292505050919050565b61212d84613022565b60006001600160e01b0319821663780e9d6360e01b14806105d057506105d082613088565b600080612b5a836128c3565b6001600160a01b0316141592915050565b600054610100900460ff16612b925760405162461bcd60e51b815260040161070390613cae565b6065612b9e8382613d84565b5060666107a48282613d84565b600054610100900460ff16612bd25760405162461bcd60e51b815260040161070390613cae565b6114f0336128de565b600082815261016d60205260409020546001600160a01b038516612c2d576001600160a01b038416600090815261016f602052604081208054839290612c22908490613c6e565b90915550612c8a9050565b6001600160a01b038516600090815261016f602052604081208054839290612c56908490613bc9565b90915550506001600160a01b038416600090815261016f602052604081208054839290612c84908490613c6e565b90915550505b612c96858585856130d8565b5050505050565b612ca78383613205565b612cb46000848484612efd565b6107a45760405162461bcd60e51b815260040161070390613f59565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d0f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612d39576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310612d5757662386f26fc10000830492506010015b6305f5e1008310612d6f576305f5e100830492506008015b6127108310612d8357612710830492506004015b60648310612d95576064830492506002015b600a83106105d05760010192915050565b6001600160a01b03808316600090815261016c602090815260408083209385168352928152828220805484518184028101840190955280855260609492830182828015612e1c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612dfe575b505050505090508051600003612eb6576040805160028082526060820183526000926020830190803683370190505090508481600081518110612e6157612e61613bdc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110612e9557612e95613bdc565b6001600160a01b039092166020928302919091019091015291506105d09050565b9392505050565b612ec68161330e565b600081815260c9602052604090208054612edf906139d0565b15905061122f57600081815260c96020526040812061122f9161360f565b6000612f11846001600160a01b0316611fe1565b15612ffa57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f48903390899088908890600401613fda565b6020604051808303816000875af1925050508015612f83575060408051601f3d908101601f19168201909252612f809181019061400d565b60015b612fe0573d808015612fb1576040519150601f19603f3d011682016040523d82523d6000602084013e612fb6565b606091505b508051600003612fd85760405162461bcd60e51b815260040161070390613f59565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061212d565b50600161212d565b606060405180606001604052806029815260200161407760299139905090565b606061302d82611f4e565b6000613037613002565b905060008151116130575760405180602001604052806000815250612eb6565b806130618461339f565b604051602001613072929190613fab565b6040516020818303038152906040529392505050565b60006001600160e01b031982166380ac58cd60e01b14806130b957506001600160e01b03198216635b5e139f60e01b145b806105d057506301ffc9a760e01b6001600160e01b03198316146105d0565b60018111156131475760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610703565b816001600160a01b0385166131a35761319e81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6131c6565b836001600160a01b0316856001600160a01b0316146131c6576131c6858261342f565b6001600160a01b0384166131e2576131dd816134cc565b612c96565b846001600160a01b0316846001600160a01b031614612c9657612c96848261357b565b6001600160a01b03821661325b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610703565b61326481612b4e565b156132815760405162461bcd60e51b81526004016107039061402a565b61328f600083836001612bdb565b61329881612b4e565b156132b55760405162461bcd60e51b81526004016107039061402a565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291906000805160206140a0833981519152908290a45050565b600061331982611424565b9050613329816000846001612bdb565b61333282611424565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084926000805160206140a0833981519152908390a45050565b606060006133ac83612cd0565b60010190506000816001600160401b038111156133cb576133cb613899565b6040519080825280601f01601f1916602001820160405280156133f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508415612339576133ff565b6000600161343c84611458565b6134469190613bc9565b600083815260986020526040902054909150808214613499576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906134de90600190613bc9565b6000838152609a60205260408120546099805493945090928490811061350657613506613bdc565b90600052602060002001549050806099838154811061352757613527613bdc565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061355f5761355f614060565b6001900381819060005260206000200160009055905550505050565b600061358683611458565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280548282559060005260206000209081019282156135ff579160200282015b828111156135ff578251829060ff169055916020019190600101906135df565b5061360b929150613645565b5090565b50805461361b906139d0565b6000825580601f1061362b575050565b601f01602090049060005260206000209081019061122f91905b5b8082111561360b5760008155600101613646565b6001600160e01b03198116811461122f57600080fd5b60006020828403121561368257600080fd5b8135612eb68161365a565b60005b838110156136a8578181015183820152602001613690565b50506000910152565b600081518084526136c981602086016020860161368d565b601f01601f19169290920160200192915050565b602081526000612eb660208301846136b1565b60006020828403121561370257600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461122f57600080fd5b6000806040838503121561374557600080fd5b82356137508161371d565b946020939093013593505050565b600080600080600060a0868803121561377657600080fd5b85356137818161371d565b945060208601356137918161371d565b935060408601356137a18161371d565b925060608601356137b18161371d565b915060808601356137c18161371d565b809150509295509295909350565b6000806000606084860312156137e457600080fd5b83356137ef8161371d565b925060208401356137ff8161371d565b929592945050506040919091013590565b60006020828403121561382257600080fd5b8135612eb68161371d565b6000806040838503121561384057600080fd5b8235915060208301356138528161371d565b809150509250929050565b801515811461122f57600080fd5b6000806040838503121561387e57600080fd5b82356138898161371d565b915060208301356138528161385d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138d7576138d7613899565b604052919050565b600080600080608085870312156138f557600080fd5b84356139008161371d565b93506020858101356139118161371d565b93506040860135925060608601356001600160401b038082111561393457600080fd5b818801915088601f83011261394857600080fd5b81358181111561395a5761395a613899565b61396c601f8201601f191685016138af565b9150808252898482850101111561398257600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156139b557600080fd5b82356139c08161371d565b915060208301356138528161371d565b600181811c908216806139e457607f821691505b602082108103613a0457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060018201613a3257613a32613a0a565b5060010190565b600060ff821660ff8103613a4f57613a4f613a0a565b60010192915050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600080600080600080600080610100898b031215613ac257600080fd5b8851613acd8161385d565b60208a0151909850613ade8161385d565b60408a015190975060078110613af357600080fd5b60608a0151909650613b048161371d565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b600060208284031215613b4157600080fd5b8151612eb68161385d565b6001600160a01b03929092168252602082015260400190565b6020808252600f908201526e20b8383937bb32903330b4b632b21760891b604082015260600190565b600060208284031215613ba057600080fd5b5051919050565b600082613bc457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105d0576105d0613a0a565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008060008060008060c08789031215613c3d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b808201808211156105d0576105d0613a0a565b80820281158282048414176105d0576105d0613a0a565b634e487b7160e01b600052602160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b601f8211156107a457600081815260208120601f850160051c81016020861015613d655750805b601f850160051c820191505b81811015610a0057828155600101613d71565b81516001600160401b03811115613d9d57613d9d613899565b613db181613dab84546139d0565b84613d3e565b602080601f831160018114613de65760008415613dce5750858301515b600019600386901b1c1916600185901b178555610a00565b600085815260208120601f198616915b82811015613e1557888601518255948401946001909101908401613df6565b5085821015613e335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e935784516001600160a01b031683529383019391830191600101613e6e565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215613ec757600080fd5b82516001600160401b0380821115613ede57600080fd5b818501915085601f830112613ef257600080fd5b815181811115613f0457613f04613899565b8060051b9150613f158483016138af565b8181529183018401918481019088841115613f2f57600080fd5b938501935b83851015613f4d57845182529385019390850190613f34565b98975050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613fbd81846020880161368d565b835190830190613fd181836020880161368d565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128b0908301846136b1565b60006020828403121561401f57600080fd5b8151612eb68161365a565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f7777772e676c6f62616c6e6574776f726b2e66696e616e63652f6572633732312fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203ad3297571f6cb0b434e9c105f2ccb8f41a7e30f41511c1cece51fb6f478552064736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
