{
  "_format": "hh-sol-artifact-1",
  "contractName": "NFT",
  "sourceName": "contracts/NFT.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "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": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Buy",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ClaimRankReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ClaimReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "Farm",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "GENESIS_POOL_KEY",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_POOL_KEY",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "IPO_POOL_KEY",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RESERVED_POOL_KEY",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "blacklistToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cardId",
          "type": "uint256"
        }
      ],
      "name": "buy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "cardMap",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isMintable",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "halfingPercentage",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimRankReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "farm",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFarmValue",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGenesisPool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "claimable",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valueLeft",
              "type": "uint256"
            }
          ],
          "internalType": "struct PoolType",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGlobalPool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "claimable",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valueLeft",
              "type": "uint256"
            }
          ],
          "internalType": "struct PoolType",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIpoPool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "claimable",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "valueLeft",
              "type": "uint256"
            }
          ],
          "internalType": "struct PoolType",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_accountAddress",
          "type": "address"
        }
      ],
      "name": "getMyRankReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gnetERC20",
      "outputs": [
        {
          "internalType": "contract GNET",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract GNET",
          "name": "_gnetERC20",
          "type": "address"
        },
        {
          "internalType": "contract Valhalla",
          "name": "_valhalla",
          "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": [],
      "name": "nftGenesis",
      "outputs": [
        {
          "internalType": "contract NFTGenesis",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "ownedTokenMap",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isBlackListed",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "cardId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastFarmedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "mintedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "mintingPrice",
          "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": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "poolMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "claimable",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "valueLeft",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rankRewardClaimedAtMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewardMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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 NFTGenesis",
          "name": "_nftGenesis",
          "type": "address"
        }
      ],
      "name": "setNFTGenesis",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startClaimingRankReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stopClaimingRankReward",
      "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": "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": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalValueMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valhalla",
      "outputs": [
        {
          "internalType": "contract Valhalla",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawAllGenesisPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600154610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff90811614620000e5576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f626200011f60003960008181610d5d01528181610d9d015281816111e001528181611220015261132f0152615f626000f3fe6080604052600436106102395760003560e01c806301ffc9a71461023e57806306fdde0314610273578063081812fc14610295578063095ea7b3146102c25780630a2a6e37146102e45780630defebeb1461030557806318160ddd1461034e5780631dede1071461036d57806321d91ef41461038d57806323b872dd146103ae57806327760dd7146103ce5780632f745c59146103fc57806330cf4dc51461041c57806332db2378146104505780633659cfe6146104705780634237ea8d1461049057806342842e0e146104a557806344712a6c146104c5578063485cc955146104f55780634f1ef286146105155780634f6ccce71461052857806352d1902d14610548578063538a85a11461055d578063602674821461057d5780636352211e14610592578063663ba86e146105b25780636dfab78e146105d257806370a08231146105f4578063715018a61461061457806383aea6451461062957806383d44339146106575780638da5cb5b14610685578063951053a61461069a57806395d89b41146106af57806398d41efb146106c45780639db0f9e4146106d9578063a22cb465146106f9578063b88a802f14610719578063b88d4fde1461072e578063ba2d50951461074e578063c415bf3d14610770578063c87b56dd14610785578063d3f46b8b146107a5578063d80f94e5146107c7578063d96a094a146107dc578063e4305a29146107fc578063e51534471461085a578063e961e1ff146108de578063e985e9c5146108ff578063f2fde38b1461091f575b600080fd5b34801561024a57600080fd5b5061025e6102593660046152a3565b61093f565b60405190151581526020015b60405180910390f35b34801561027f57600080fd5b50610288610950565b60405161026a9190615310565b3480156102a157600080fd5b506102b56102b0366004615323565b6109e2565b60405161026a919061533c565b3480156102ce57600080fd5b506102e26102dd366004615365565b610a09565b005b3480156102f057600080fd5b50610167546102b5906001600160a01b031681565b34801561031157600080fd5b50610339610320366004615323565b6000602081905290815260409020805460019091015482565b6040805192835260208301919091520161026a565b34801561035a57600080fd5b5060cc545b60405190815260200161026a565b34801561037957600080fd5b506102e2610388366004615323565b610b23565b34801561039957600080fd5b5061016a546102b5906001600160a01b031681565b3480156103ba57600080fd5b506102e26103c9366004615391565b610c61565b3480156103da57600080fd5b5061035f6103e93660046153d2565b6101656020526000908152604090205481565b34801561040857600080fd5b5061035f610417366004615365565b610c92565b34801561042857600080fd5b5061035f7f07b941733a7a0fb95acb53f7ec363f2e58bcfffba15469eb7d5ade1ddbb3447481565b34801561045c57600080fd5b506102e261046b3660046153d2565b610d28565b34801561047c57600080fd5b506102e261048b3660046153d2565b610d53565b34801561049c57600080fd5b506102e2610e1b565b3480156104b157600080fd5b506102e26104c0366004615391565b610e7f565b3480156104d157600080fd5b506104da610e9a565b6040805182518152602092830151928101929092520161026a565b34801561050157600080fd5b506102e26105103660046153ef565b610ef2565b6102e26105233660046154ca565b6111d6565b34801561053457600080fd5b5061035f610543366004615323565b61128f565b34801561055457600080fd5b5061035f611322565b34801561056957600080fd5b506102e2610578366004615323565b6113d0565b34801561058957600080fd5b506104da6119e2565b34801561059e57600080fd5b506102b56105ad366004615323565b611a4c565b3480156105be57600080fd5b5061035f6105cd366004615323565b611a80565b3480156105de57600080fd5b5061035f600080516020615dbe83398151915281565b34801561060057600080fd5b5061035f61060f3660046153d2565b611b79565b34801561062057600080fd5b506102e2611bff565b34801561063557600080fd5b5061035f6106443660046153d2565b6101636020526000908152604090205481565b34801561066357600080fd5b5061035f6106723660046153d2565b6101646020526000908152604090205481565b34801561069157600080fd5b506102b5611c13565b3480156106a657600080fd5b506104da611c22565b3480156106bb57600080fd5b50610288611c9e565b3480156106d057600080fd5b506102e2611cad565b3480156106e557600080fd5b5061035f6106f43660046153d2565b611d15565b34801561070557600080fd5b506102e2610714366004615527565b612122565b34801561072557600080fd5b506102e261212d565b34801561073a57600080fd5b506102e2610749366004615555565b6124f0565b34801561075a57600080fd5b5061035f600080516020615e5e83398151915281565b34801561077c57600080fd5b506102e2612528565b34801561079157600080fd5b506102886107a0366004615323565b612b1e565b3480156107b157600080fd5b5061035f600080516020615ec583398151915281565b3480156107d357600080fd5b506102e2612bdf565b3480156107e857600080fd5b506102e26107f7366004615323565b612c92565b34801561080857600080fd5b5061083d610817366004615323565b6101626020526000908152604090208054600182015460029092015460ff909116919083565b60408051931515845260208401929092529082015260600161026a565b34801561086657600080fd5b506108af610875366004615323565b6101616020526000908152604090208054600182015460028301546003840154600485015460059095015460ff9094169492939192909186565b6040805196151587526020870195909552938501929092526060840152608083015260a082015260c00161026a565b3480156108ea57600080fd5b50610166546102b5906001600160a01b031681565b34801561090b57600080fd5b5061025e61091a3660046153ef565b6134d3565b34801561092b57600080fd5b506102e261093a3660046153d2565b613501565b600061094a82613577565b92915050565b60606098805461095f906155c0565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906155c0565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b5050505050905090565b60006109ed8261359c565b506000908152609c60205260409020546001600160a01b031690565b6000610a1482611a4c565b9050806001600160a01b0316836001600160a01b031603610a865760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610aa25750610aa281336134d3565b610b145760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a7d565b610b1e83836135c1565b505050565b610167546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf916004808201926020929091908290030181865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906155fa565b336040518363ffffffff1660e01b8152600401610bb8929190615613565b602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061562a565b610c455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792041646d696e2063616e20706572666f726d20616374696f6e0000006044820152606401610a7d565b600090815261016160205260409020805460ff19166001179055565b610c6b338261362f565b610c875760405162461bcd60e51b8152600401610a7d90615647565b610b1e83838361368e565b6000610c9d83611b79565b8210610cff5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a7d565b506001600160a01b0391909116600090815260ca60209081526040808320938352929052205490565b610d306137f5565b61016a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d9b5760405162461bcd60e51b8152600401610a7d90615694565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dcd613854565b6001600160a01b031614610df35760405162461bcd60e51b8152600401610a7d906156ce565b610dfc81613870565b60408051600080825260208201909252610e1891839190613878565b50565b610167546001600160a01b03163314610e465760405162461bcd60e51b8152600401610a7d90615708565b600080516020615ec58339815191526000908152602052600080516020615dde83398151915254600080516020615f0d83398151915255565b610b1e838383604051806020016040528060008152506124f0565b610ea2615273565b50600080516020615ec58339815191526000908152602090815260408051808201909152600080516020615dde833981519152548152600080516020615f0d833981519152549181019190915290565b600154610100900460ff1615808015610f0f57506001805460ff16105b80610f2f5750610f1e306139e3565b158015610f2f57506001805460ff16145b610f925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a7d565b6001805460ff1916811790558015610fb4576001805461ff0019166101001790555b6110026040518060400160405280601081526020016f11db1bd8985b13995d1ddbdc9ad3919560821b8152506040518060400160405280600481526020016311d3919560e21b8152506139f2565b61100a613a23565b611012613a4a565b61101a613a23565b61016680546001600160a01b038086166001600160a01b0319928316179092556101678054928516929091169190911790556040805160c08101825261138881526161a86020820152620186a0918101919091526207a1206060820152622625a060808201526298968060a082015260005b600681101561118b5760006110a16101695490565b6000818152610162602090815260409182902061016654835163313ce56760e01b8152935194955090936001600160a01b039091169263313ce5679260048083019391928290030181865afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111229190615738565b61112d90600a615855565b84836006811061113f5761113f615864565b602002015161114e919061587a565b60018083019190915560646002830155815460ff191617815561117661016980546001019055565b5050808061118390615891565b91505061108c565b50508015610b1e576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121e5760405162461bcd60e51b8152600401610a7d90615694565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611250613854565b6001600160a01b0316146112765760405162461bcd60e51b8152600401610a7d906156ce565b61127f82613870565b61128b82826001613878565b5050565b600061129a60cc5490565b82106112fd5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a7d565b60cc828154811061131057611310615864565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113bd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a7d565b50600080516020615e3e83398151915290565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061140190339060040161533c565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061562a565b15156001036114635760405162461bcd60e51b8152600401610a7d906158aa565b3361146d82611a4c565b6001600160a01b0316146114b95760405162461bcd60e51b815260206004820152601360248201527231b0b63632b91034b9903737ba1037bbb732b960691b6044820152606401610a7d565b6000818152610161602052604090205460ff161561150d5760405162461bcd60e51b81526020600482015260116024820152701d1bdad95b88189b1858dadb1a5cdd1959607a1b6044820152606401610a7d565b600061151882611a80565b90506000811161155e5760405162461bcd60e51b81526020600482015260116024820152704e6f2072657761726420746f206661726d60781b6044820152606401610a7d565b6000606461156d83600a61587a565b61157791906158ed565b905060006115866002836158ed565b61016654610167546040805163f481e86360e01b815290519394506001600160a01b0392831693634cc0f367938693169163f481e8639160048083019260209291908290030181865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116059190615901565b6040518363ffffffff1660e01b8152600401611622929190615613565b600060405180830381600087803b15801561163c57600080fd5b505af1158015611650573d6000803e3d6000fd5b5050610166546101675460408051631f2957b160e21b815290516001600160a01b039384169550634cc0f3679450869390921691637ca55ec4916004808201926020929091908290030181865afa1580156116af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d39190615901565b6040518363ffffffff1660e01b81526004016116f0929190615613565b600060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b5050610166546001600160a01b03169150634cc0f3679050611740848661591e565b336040518363ffffffff1660e01b815260040161175e929190615613565b600060405180830381600087803b15801561177857600080fd5b505af115801561178c573d6000803e3d6000fd5b505061016754604051630fa2d9ff60e41b8152600093508392506001600160a01b039091169063fa2d9ff0906117c690339060040161533c565b61010060405180830381865afa1580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118089190615931565b5093975091955060019450505050505b60648111611987576001600160a01b0382161561198757600061183b8284613a79565b905080156118f15760006064611851838a61587a565b61185b91906158ed565b61016654604051634cc0f36760e01b81529192506001600160a01b031690634cc0f3679061188f9084903090600401615613565b600060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506001600160a01b03841660009081526101646020526040812080548392906118ea9084906159bb565b9091555050505b61016754604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff09061192290869060040161533c565b61010060405180830381865afa158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190615931565b5093995091975086955061197f945085935061589192505050565b915050611818565b506000868152610161602052604090819020426003909101555186907f18b858dd8351526e5e7ab4ec353f5309024990391b3eb1e14a753249345ac5da906119d29088815260200190565b60405180910390a2505050505050565b6119ea615273565b50600080516020615e5e8339815191526000908152602090815260408051808201909152600080516020615e1e8339815191525481527f7ae3c50dab2a4efefa12dcfbd46eb63dd82ec1805ae28aeb47fe2451bfc1cdaa549181019190915290565b600080611a588361418c565b90506001600160a01b03811661094a5760405162461bcd60e51b8152600401610a7d906159ce565b600081815261016160209081526040808320600180820154855261016284528285208351606081018552815460ff16151581529181015494820194909452600290930154918301919091529062015180611adc816101c261587a565b8360040154611aeb91906159bb565b421115611afd57506000949350505050565b60028301546005840154600385015460006103e8611b1b858561587a565b611b2591906158ed565b90506000611b3386836158ed565b9050600081611b42854261591e565b611b4c919061587a565b90506064886040015182611b60919061587a565b611b6a91906158ed565b9b9a5050505050505050505050565b60006001600160a01b038216611be35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a7d565b506001600160a01b03166000908152609b602052604090205490565b611c076137f5565b611c1160006141a7565b565b6034546001600160a01b031690565b611c2a615273565b50600080516020615dbe83398151915260009081526020908152604080518082019091527fe48cbce158a88b2ae025b935f2c891db41fa49d66e958301265adefc644e90755481527fe48cbce158a88b2ae025b935f2c891db41fa49d66e958301265adefc644e9076549181019190915290565b60606099805461095f906155c0565b610167546001600160a01b03163314611cd85760405162461bcd60e51b8152600401610a7d90615708565b600080516020615ec583398151915260009081526020819052600080516020615f0d8339815191528054600080516020615dde8339815191525555565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090611d4b90869060040161533c565b61010060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d9190615931565b5050600080516020615ec5833981519152600090815260208181526101675460408051636ae994a760e01b81529051979a50600080516020615dde83398151915299509297506001600160a01b031695636ae994a7955060048084019550919350918290030181865afa158015611e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c919061562a565b90508160010154600003611e4557506000949350505050565b610167546040805163238d642760e11b815290516000926001600160a01b03169163471ac84e9160048083019260209291908290030181865afa158015611e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb491906155fa565b9050811515600003611ecc5750600095945050505050565b6001600160a01b038616600090815261016560205260409020548111611ef85750600095945050505050565b6000846006811115611f0c57611f0c615a00565b03611f1d5750600095945050505050565b60008060008060008061016760009054906101000a90046001600160a01b03166001600160a01b031663d35cb1ad6040518163ffffffff1660e01b815260040160c060405180830381865afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e9190615a16565b949a5092985090965094509250905060008060018c6006811115611fc457611fc4615a00565b03611fe9578a54889250606490611fdc90600361587a565b611fe691906158ed565b90505b60028c6006811115611ffd57611ffd615a00565b03612022578a5487925060649061201590600761587a565b61201f91906158ed565b90505b60038c600681111561203657612036615a00565b0361205b578a5486925060649061204e90600c61587a565b61205891906158ed565b90505b60048c600681111561206f5761206f615a00565b03612094578a5485925060649061208790601261587a565b61209191906158ed565b90505b60058c60068111156120a8576120a8615a00565b036120cd578a548492506064906120c090601a61587a565b6120ca91906158ed565b90505b60068c60068111156120e1576120e1615a00565b03612106578a548392506064906120f990602261587a565b61210391906158ed565b90505b61211082826158ed565b9e9d5050505050505050505050505050565b61128b3383836141f9565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061215e90339060040161533c565b602060405180830381865afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f919061562a565b15156001036121c05760405162461bcd60e51b8152600401610a7d906158aa565b336000908152610164602090815260408083205461016754825163f481e86360e01b815292519194936001600160a01b039091169263f481e86392600480830193928290030181865afa15801561221b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223f9190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316637ca55ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190615901565b9050600083116123075760405162461bcd60e51b8152602060048201526017602482015276139bc81c995dd85c99081d1bc818994818db185a5b5959604a1b6044820152606401610a7d565b6000606461231685600a61587a565b61232091906158ed565b9050600061232f6002836158ed565b6101665460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906123639087908590600401615a60565b6020604051808303816000875af1158015612382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a6919061562a565b506101665460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906123da9086908590600401615a60565b6020604051808303816000875af11580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d919061562a565b50610166546001600160a01b031663a9059cbb3361243b858961591e565b6040518363ffffffff1660e01b8152600401612458929190615a60565b6020604051808303816000875af1158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061562a565b5033600081815261016460205260408120557fba8de60c3403ec381d1d484652ea1980e3c3e56359195c92525bff4ce47ad98e6124d8848861591e565b60405190815260200160405180910390a25050505050565b6124fa338361362f565b6125165760405162461bcd60e51b8152600401610a7d90615647565b612522848484846142c3565b50505050565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061255990339060040161533c565b602060405180830381865afa158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259a919061562a565b15156001036125bb5760405162461bcd60e51b8152600401610a7d906158aa565b61016754604051630fa2d9ff60e41b81526000916001600160a01b03169063fa2d9ff0906125ed90339060040161533c565b61010060405180830381865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190615931565b5050600080516020615ec583398151915260009081526020819052939650600080516020615dde83398151915295509293506126709250339150611d159050565b3360009081526101636020908152604080832054815160e08101835293845261c3509284019290925262030d4090830152620f42406060830152624c4b40608083015263017d784060a08301526305f5e10060c0830152919250826127125760405162461bcd60e51b8152602060048201526018602482015277139bc814995dd85c990818d85b8818994818db185a5b595960421b6044820152606401610a7d565b60005b600781101561284f578086600681111561273157612731615a00565b1480156127505750600086600681111561274d5761274d615a00565b14155b1561283d5761016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cd9190615738565b6127d890600a615855565b8282600781106127ea576127ea615864565b602002015163ffffffff166127ff919061587a565b83101561283d5760405162461bcd60e51b815260206004820152600c60248201526b4e6f7420456c696769626c6560a01b6044820152606401610a7d565b8061284781615891565b915050612715565b506000606461285f85600a61587a565b61286991906158ed565b905060006128786002836158ed565b61016654610167546040805163f481e86360e01b815290519394506001600160a01b039283169363a9059cbb939092169163f481e863916004808201926020929091908290030181865afa1580156128d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f89190615901565b836040518363ffffffff1660e01b8152600401612916929190615a60565b6020604051808303816000875af1158015612935573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612959919061562a565b50610166546101675460408051631f2957b160e21b815290516001600160a01b039384169363a9059cbb931691637ca55ec49160048083019260209291908290030181865afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615901565b836040518363ffffffff1660e01b81526004016129f2929190615a60565b6020604051808303816000875af1158015612a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a35919061562a565b50610166546001600160a01b031663a9059cbb33612a53858961591e565b6040518363ffffffff1660e01b8152600401612a70929190615a60565b6020604051808303816000875af1158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab3919061562a565b5033600090815261016560205260408120429055600187018054879290612adb90849061591e565b909155505060405185815233907feff26bb1aaac7ce27452afaf8402dbd160686540ece1c14d857cf0c272b5cba49060200160405180910390a250505050505050565b6060612b298261359c565b6000612b336142f6565b60008481526101616020908152604091829020825160c081018452815460ff1615158152600182015492810183905260028201549381019390935260038101546060840152600481015460808401526005015460a083015282519293509091612bab5760405180602001604052806000815250612bd6565b82612bb582614316565b604051602001612bc6929190615a79565b6040516020818303038152906040525b95945050505050565b612be76137f5565b600080516020615e5e833981519152600090815260205261016654600080516020615e1e833981519152805460405163a9059cbb60e01b815291926001600160a01b03169163a9059cbb91612c4191339190600401615a60565b6020604051808303816000875af1158015612c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c84919061562a565b506000808255600190910155565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc90612cc390339060040161533c565b602060405180830381865afa158015612ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d04919061562a565b1515600103612d255760405162461bcd60e51b8152600401610a7d906158aa565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090612d5b90339060040161533c565b61010060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d9190615931565b5050610167546040805163f481e86360e01b815290519799509497506000966001600160a01b03909116955063f481e8639460048082019550602094509192508290030181865afa158015612df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1a9190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316637ca55ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e969190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316636ae994a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f12919061562a565b6000878152610162602052604090209091508115612f625760405162461bcd60e51b815260206004820152600d60248201526c13585c9ad95d0818db1bdcd959609a1b6044820152606401610a7d565b85612fa75760405162461bcd60e51b8152602060048201526015602482015274149959da5cdd1c985d1a5bdb881c995c5d5a5c9959605a1b6044820152606401610a7d565b6000816001015411612fea5760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a590818d85c9960a21b6044820152606401610a7d565b805460ff166130325760405162461bcd60e51b815260206004820152601460248201527343617264206973206e6f74206d696e7461626c6560601b6044820152606401610a7d565b6040805160e081018252620186a0815262030d406020820152620f424091810191909152624c4b4060608201526301312d0060808201526305f5e10060a0820152631dcd650060c082015260005b60078110156131bb578087600681111561309c5761309c615a00565b036131a95761016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131199190615738565b61312490600a615855565b82826007811061313657613136615864565b602002015163ffffffff1661314b919061587a565b3360009081526101636020526040902054600185015461316b91906159bb565b11156131a95760405162461bcd60e51b815260206004820152600d60248201526c26b0bc10213abc9022b93937b960991b6044820152606401610a7d565b806131b381615891565b915050613080565b5060006064836001015460056131d1919061587a565b6131db91906158ed565b6101665460018501549192506001600160a01b0316906323b872dd903390309061320690869061591e565b6040518463ffffffff1660e01b815260040161322493929190615aa8565b6020604051808303816000875af1158015613243573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613267919061562a565b5061328d60648460010154601161327e919061587a565b61328891906158ed565b6143a8565b613296816143ed565b60006064846001015460146132ab919061587a565b6132b591906158ed565b905060006132c46002836158ed565b6101665460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906132f8908b908590600401615a60565b6020604051808303816000875af1158015613317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333b919061562a565b506101665460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061336f908a908590600401615a60565b6020604051808303816000875af115801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b2919061562a565b506101665460018601546001600160a01b03909116906342966c68906064906133dc90603a61587a565b6133e691906158ed565b6040518263ffffffff1660e01b815260040161340491815260200190565b600060405180830381600087803b15801561341e57600080fd5b505af1158015613432573d6000803e3d6000fd5b5050505060006134426101685490565b60008181526101616020526040902060018082018f905588015460058201554260048201819055600382015590915061347961473d565b600282015561348d61016880546001019055565b61349733836147f7565b604051829033907fe3d4187f6ca4248660cc0ac8b8056515bac4a8132be2eca31d6d0cc170722a7e90600090a350505050505050505050505050565b6001600160a01b039182166000908152609d6020908152604080832093909416825291909152205460ff1690565b6135096137f5565b6001600160a01b03811661356e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7d565b610e18816141a7565b60006001600160e01b0319821663780e9d6360e01b148061094a575061094a82614811565b6135a581614861565b610e185760405162461bcd60e51b8152600401610a7d906159ce565b6000818152609c6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906135f682611a4c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061363b83611a4c565b9050806001600160a01b0316846001600160a01b03161480613662575061366281856134d3565b806136865750836001600160a01b031661367b846109e2565b6001600160a01b0316145b949350505050565b826001600160a01b03166136a182611a4c565b6001600160a01b0316146136c75760405162461bcd60e51b8152600401610a7d90615acc565b6001600160a01b0382166137295760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7d565b613736838383600161487e565b826001600160a01b031661374982611a4c565b6001600160a01b03161461376f5760405162461bcd60e51b8152600401610a7d90615acc565b6000818152609c6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609b8552838620805460001901905590871680865283862080546001019055868652609a9094528285208054909216841790915590518493600080516020615ea583398151915291a4610b1e838383600161488a565b336137fe611c13565b6001600160a01b031614611c115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7d565b600080516020615e3e833981519152546001600160a01b031690565b610e186137f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156138ab57610b1e83614979565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613905575060408051601f3d908101601f19168201909252613902918101906155fa565b60015b6139685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a7d565b600080516020615e3e83398151915281146139d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a7d565b50610b1e838383614a13565b6001600160a01b03163b151590565b600154610100900460ff16613a195760405162461bcd60e51b8152600401610a7d90615b11565b61128b8282614a38565b600154610100900460ff16611c115760405162461bcd60e51b8152600401610a7d90615b11565b600154610100900460ff16613a715760405162461bcd60e51b8152600401610a7d90615b11565b611c11614a78565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090613aaf90869060040161533c565b61010060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190615931565b50939650505060018810801594509250613b0f915050575060058411155b8015613bc2575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8e9190615738565b613b9990600a615855565b613ba59061138861587a565b6001600160a01b0384166000908152610163602052604090205410155b15613bd157600591505061094a565b60068410158015613be35750600a8411155b8015613c0157506001816006811115613bfe57613bfe615a00565b10155b8015613cb4575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615738565b613c8b90600a615855565b613c97906161a861587a565b6001600160a01b0384166000908152610163602052604090205410155b15613cc357600191505061094a565b600b8410158015613cd5575060148411155b8015613cf357506002816006811115613cf057613cf0615a00565b10155b8015613da7575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d729190615738565b613d7d90600a615855565b613d8a90620186a061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613db657600191505061094a565b60158410158015613dc8575060288411155b8015613de657506003816006811115613de357613de3615a00565b10155b8015613e9a575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e659190615738565b613e7090600a615855565b613e7d906207a12061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613ea957600191505061094a565b60298410158015613ebb5750603c8411155b8015613ed957506004816006811115613ed657613ed6615a00565b10155b8015613f8d575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f589190615738565b613f6390600a615855565b613f7090622625a061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613f9c57600191505061094a565b603d8410158015613fae575060508411155b8015613fcc57506005816006811115613fc957613fc9615a00565b10155b8015614080575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404b9190615738565b61405690600a615855565b614063906298968061587a565b6001600160a01b0384166000908152610163602052604090205410155b1561408f57600191505061094a565b605184101580156140a1575060648411155b80156140be575060068160068111156140bc576140bc615a00565b145b8015614173575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413d9190615738565b61414890600a615855565b614156906302faf08061587a565b6001600160a01b0384166000908152610163602052604090205410155b1561418257600191505061094a565b5060009392505050565b6000908152609a60205260409020546001600160a01b031690565b603480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036142565760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610a7d565b6001600160a01b038381166000818152609d6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6142ce84848461368e565b6142da84848484614aa8565b6125225760405162461bcd60e51b8152600401610a7d90615b5c565b6060604051806060016040528060288152602001615ee560289139905090565b6060600061432383614bb0565b60010190506000816001600160401b0381111561434257614342615428565b6040519080825280601f01601f19166020018201604052801561436c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461437657509392505050565b600080516020615ec583398151915260009081526020819052600080516020615dde8339815191528054909183918391906143e49084906159bb565b90915550505050565b60008061016a60009054906101000a90046001600160a01b03166001600160a01b031663dc3676b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015614444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061446891906155fa565b9050600061016a60009054906101000a90046001600160a01b03166001600160a01b03166316fed3e26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e49190615901565b905060005b828110156146375761016a5460405163e4305a2960e01b815260048101839052600091829182916001600160a01b03169063e4305a2990602401608060405180830381865afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145649190615bae565b93509350935050600082826064868c61457d919061587a565b61458791906158ed565b61459191906158ed565b61459b919061587a565b90506145a781896159bb565b9750806000036145ba5750505050614625565b61016a54604051635b2c9e4760e11b815260048101879052602481018390526001600160a01b039091169063b6593c8e90604401600060405180830381600087803b15801561460857600080fd5b505af115801561461c573d6000803e3d6000fd5b50505050505050505b8061462f81615891565b9150506144e9565b506101665461016a546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92614673923392909116908890600401615aa8565b6020604051808303816000875af1158015614692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146b6919061562a565b50610166546001600160a01b03166323b872dd33836146d5878961591e565b6040518463ffffffff1660e01b81526004016146f393929190615aa8565b6020604051808303816000875af1158015614712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614736919061562a565b5050505050565b60008061474b6103e8614c86565b90506102bb811161475e57600591505090565b6102bb8111801561477157506103848111155b1561477e57600691505090565b6103848111801561479157506103df8111155b1561479e57600791505090565b6103df811180156147b157506103e48111155b156147be57600891505090565b6103e4811180156147d157506103e68111155b156147de57600a91505090565b806103e7036147ef57600f91505090565b600891505090565b61128b828260405180602001604052806000815250614cf0565b60006001600160e01b031982166380ac58cd60e01b148061484257506001600160e01b03198216635b5e139f60e01b145b8061094a57506301ffc9a760e01b6001600160e01b031983161461094a565b60008061486d8361418c565b6001600160a01b0316141592915050565b61252284848484614d23565b600082815261016160205260409020600501546001600160a01b0385166148df576001600160a01b03841660009081526101636020526040812080548392906148d49084906159bb565b909155506147369050565b6001600160a01b038416614916576001600160a01b03851660009081526101636020526040812080548392906148d490849061591e565b6001600160a01b038516600090815261016360205260408120805483929061493f90849061591e565b90915550506001600160a01b038416600090815261016360205260408120805483929061496d9084906159bb565b90915550505050505050565b614982816139e3565b6149e45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a7d565b600080516020615e3e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614a1c83614e50565b600082511180614a295750805b15610b1e576125228383614e90565b600154610100900460ff16614a5f5760405162461bcd60e51b8152600401610a7d90615b11565b6098614a6b8382615c32565b506099610b1e8282615c32565b600154610100900460ff16614a9f5760405162461bcd60e51b8152600401610a7d90615b11565b611c11336141a7565b6000614abc846001600160a01b03166139e3565b15614ba557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614af3903390899088908890600401615cf1565b6020604051808303816000875af1925050508015614b2e575060408051601f3d908101601f19168201909252614b2b91810190615d24565b60015b614b8b573d808015614b5c576040519150601f19603f3d011682016040523d82523d6000602084013e614b61565b606091505b508051600003614b835760405162461bcd60e51b8152600401610a7d90615b5c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613686565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614bef5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614c19576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310614c3757662386f26fc10000830492506010015b6305f5e1008310614c4f576305f5e100830492506008015b6127108310614c6357612710830492506004015b60648310614c75576064830492506002015b600a831061094a5760010192915050565b610160805460009182614c9883615891565b909155505061016054604080514260208201526001600160601b03193360601b1691810191909152605481019190915282906074016040516020818303038152906040528051906020012060001c61094a9190615d41565b614cfa8383614ebc565b614d076000848484614aa8565b610b1e5760405162461bcd60e51b8152600401610a7d90615b5c565b6001811115614d925760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610a7d565b816001600160a01b038516614dee57614de98160cc8054600083815260cd60205260408120829055600182018355919091527f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe0155565b614e11565b836001600160a01b0316856001600160a01b031614614e1157614e118582614fcf565b6001600160a01b038416614e2d57614e288161506c565b614736565b846001600160a01b0316846001600160a01b03161461473657614736848261511b565b614e5981614979565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614eb58383604051806060016040528060278152602001615e7e6027913961515f565b9392505050565b6001600160a01b038216614f125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a7d565b614f1b81614861565b15614f385760405162461bcd60e51b8152600401610a7d90615d55565b614f4660008383600161487e565b614f4f81614861565b15614f6c5760405162461bcd60e51b8152600401610a7d90615d55565b6001600160a01b0382166000818152609b6020908152604080832080546001019055848352609a90915280822080546001600160a01b031916841790555183929190600080516020615ea5833981519152908290a461128b60008383600161488a565b60006001614fdc84611b79565b614fe6919061591e565b600083815260cb6020526040902054909150808214615039576001600160a01b038416600090815260ca60209081526040808320858452825280832054848452818420819055835260cb90915290208190555b50600091825260cb602090815260408084208490556001600160a01b03909416835260ca81528383209183525290812055565b60cc5460009061507e9060019061591e565b600083815260cd602052604081205460cc80549394509092849081106150a6576150a6615864565b906000526020600020015490508060cc83815481106150c7576150c7615864565b600091825260208083209091019290925582815260cd909152604080822084905585825281205560cc8054806150ff576150ff615d8b565b6001900381819060005260206000200160009055905550505050565b600061512683611b79565b6001600160a01b03909316600090815260ca60209081526040808320868452825280832085905593825260cb9052919091209190915550565b6060600080856001600160a01b03168560405161517c9190615da1565b600060405180830381855af49150503d80600081146151b7576040519150601f19603f3d011682016040523d82523d6000602084013e6151bc565b606091505b50915091506151cd868383876151d7565b9695505050505050565b6060831561524457825160000361523d576151f1856139e3565b61523d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a7d565b5081613686565b61368683838151156152595781518083602001fd5b8060405162461bcd60e51b8152600401610a7d9190615310565b604051806040016040528060008152602001600081525090565b6001600160e01b031981168114610e1857600080fd5b6000602082840312156152b557600080fd5b8135614eb58161528d565b60005b838110156152db5781810151838201526020016152c3565b50506000910152565b600081518084526152fc8160208601602086016152c0565b601f01601f19169290920160200192915050565b602081526000614eb560208301846152e4565b60006020828403121561533557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610e1857600080fd5b6000806040838503121561537857600080fd5b823561538381615350565b946020939093013593505050565b6000806000606084860312156153a657600080fd5b83356153b181615350565b925060208401356153c181615350565b929592945050506040919091013590565b6000602082840312156153e457600080fd5b8135614eb581615350565b6000806040838503121561540257600080fd5b823561540d81615350565b9150602083013561541d81615350565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261544f57600080fd5b81356001600160401b038082111561546957615469615428565b604051601f8301601f19908116603f0116810190828211818310171561549157615491615428565b816040528381528660208588010111156154aa57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156154dd57600080fd5b82356154e881615350565b915060208301356001600160401b0381111561550357600080fd5b61550f8582860161543e565b9150509250929050565b8015158114610e1857600080fd5b6000806040838503121561553a57600080fd5b823561554581615350565b9150602083013561541d81615519565b6000806000806080858703121561556b57600080fd5b843561557681615350565b9350602085013561558681615350565b92506040850135915060608501356001600160401b038111156155a857600080fd5b6155b48782880161543e565b91505092959194509250565b600181811c908216806155d457607f821691505b6020821081036155f457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561560c57600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b60006020828403121561563c57600080fd5b8151614eb581615519565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c90820152600080516020615dfe83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020615dfe83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60208082526016908201527513db9b1e481d985b1a185b1b184818d85b8818d85b1b60521b604082015260600190565b60006020828403121561574a57600080fd5b815160ff81168114614eb557600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156157ac5781600019048211156157925761579261575b565b8085161561579f57918102915b93841c9390800290615776565b509250929050565b6000826157c35750600161094a565b816157d05750600061094a565b81600181146157e657600281146157f05761580c565b600191505061094a565b60ff8411156158015761580161575b565b50506001821b61094a565b5060208310610133831016604e8410600b841016171561582f575081810a61094a565b6158398383615771565b806000190482111561584d5761584d61575b565b029392505050565b6000614eb560ff8416836157b4565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761094a5761094a61575b565b6000600182016158a3576158a361575b565b5060010190565b6020808252601390820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826158fc576158fc6158d7565b500490565b60006020828403121561591357600080fd5b8151614eb581615350565b8181038181111561094a5761094a61575b565b600080600080600080600080610100898b03121561594e57600080fd5b885161595981615519565b60208a015190985061596a81615519565b60408a01519097506007811061597f57600080fd5b60608a015190965061599081615350565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b8082018082111561094a5761094a61575b565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b60008060008060008060c08789031215615a2f57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6001600160a01b03929092168252602082015260400190565b60008351615a8b8184602088016152c0565b835190830190615a9f8183602088016152c0565b01949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008060008060808587031215615bc457600080fd5b505082516020840151604085015160609095015191969095509092509050565b601f821115610b1e57600081815260208120601f850160051c81016020861015615c0b5750805b601f850160051c820191505b81811015615c2a57828155600101615c17565b505050505050565b81516001600160401b03811115615c4b57615c4b615428565b615c5f81615c5984546155c0565b84615be4565b602080601f831160018114615c945760008415615c7c5750858301515b600019600386901b1c1916600185901b178555615c2a565b600085815260208120601f198616915b82811015615cc357888601518255948401946001909101908401615ca4565b5085821015615ce15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906151cd908301846152e4565b600060208284031215615d3657600080fd5b8151614eb58161528d565b600082615d5057615d506158d7565b500690565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b60008251615db38184602087016152c0565b919091019291505056feef78ff2707f55cf683ecba27f753a1f73d88a2972299daeedcdcce2c52b7821d335d3c6b885408497fbfb0b6def492ee75738904e5f4f2ba351dbd9fcd1022c046756e6374696f6e206d7573742062652063616c6c6564207468726f756768207ae3c50dab2a4efefa12dcfbd46eb63dd82ec1805ae28aeb47fe2451bfc1cda9360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc791b07db9f5ba47b7333684f8aab1753657d4cf52dbb1ca2e58c7c7643deb25c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4caf09f7dd9cf5930a0d30d4dba10a4d06c1e6d90491f8198b355f99152771b068747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f696d6167652f335d3c6b885408497fbfb0b6def492ee75738904e5f4f2ba351dbd9fcd1022c1a264697066735822122048de45b7565bae2582989b8b4007e6760659f5d061687d3351540bdd63ae6e4864736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106102395760003560e01c806301ffc9a71461023e57806306fdde0314610273578063081812fc14610295578063095ea7b3146102c25780630a2a6e37146102e45780630defebeb1461030557806318160ddd1461034e5780631dede1071461036d57806321d91ef41461038d57806323b872dd146103ae57806327760dd7146103ce5780632f745c59146103fc57806330cf4dc51461041c57806332db2378146104505780633659cfe6146104705780634237ea8d1461049057806342842e0e146104a557806344712a6c146104c5578063485cc955146104f55780634f1ef286146105155780634f6ccce71461052857806352d1902d14610548578063538a85a11461055d578063602674821461057d5780636352211e14610592578063663ba86e146105b25780636dfab78e146105d257806370a08231146105f4578063715018a61461061457806383aea6451461062957806383d44339146106575780638da5cb5b14610685578063951053a61461069a57806395d89b41146106af57806398d41efb146106c45780639db0f9e4146106d9578063a22cb465146106f9578063b88a802f14610719578063b88d4fde1461072e578063ba2d50951461074e578063c415bf3d14610770578063c87b56dd14610785578063d3f46b8b146107a5578063d80f94e5146107c7578063d96a094a146107dc578063e4305a29146107fc578063e51534471461085a578063e961e1ff146108de578063e985e9c5146108ff578063f2fde38b1461091f575b600080fd5b34801561024a57600080fd5b5061025e6102593660046152a3565b61093f565b60405190151581526020015b60405180910390f35b34801561027f57600080fd5b50610288610950565b60405161026a9190615310565b3480156102a157600080fd5b506102b56102b0366004615323565b6109e2565b60405161026a919061533c565b3480156102ce57600080fd5b506102e26102dd366004615365565b610a09565b005b3480156102f057600080fd5b50610167546102b5906001600160a01b031681565b34801561031157600080fd5b50610339610320366004615323565b6000602081905290815260409020805460019091015482565b6040805192835260208301919091520161026a565b34801561035a57600080fd5b5060cc545b60405190815260200161026a565b34801561037957600080fd5b506102e2610388366004615323565b610b23565b34801561039957600080fd5b5061016a546102b5906001600160a01b031681565b3480156103ba57600080fd5b506102e26103c9366004615391565b610c61565b3480156103da57600080fd5b5061035f6103e93660046153d2565b6101656020526000908152604090205481565b34801561040857600080fd5b5061035f610417366004615365565b610c92565b34801561042857600080fd5b5061035f7f07b941733a7a0fb95acb53f7ec363f2e58bcfffba15469eb7d5ade1ddbb3447481565b34801561045c57600080fd5b506102e261046b3660046153d2565b610d28565b34801561047c57600080fd5b506102e261048b3660046153d2565b610d53565b34801561049c57600080fd5b506102e2610e1b565b3480156104b157600080fd5b506102e26104c0366004615391565b610e7f565b3480156104d157600080fd5b506104da610e9a565b6040805182518152602092830151928101929092520161026a565b34801561050157600080fd5b506102e26105103660046153ef565b610ef2565b6102e26105233660046154ca565b6111d6565b34801561053457600080fd5b5061035f610543366004615323565b61128f565b34801561055457600080fd5b5061035f611322565b34801561056957600080fd5b506102e2610578366004615323565b6113d0565b34801561058957600080fd5b506104da6119e2565b34801561059e57600080fd5b506102b56105ad366004615323565b611a4c565b3480156105be57600080fd5b5061035f6105cd366004615323565b611a80565b3480156105de57600080fd5b5061035f600080516020615dbe83398151915281565b34801561060057600080fd5b5061035f61060f3660046153d2565b611b79565b34801561062057600080fd5b506102e2611bff565b34801561063557600080fd5b5061035f6106443660046153d2565b6101636020526000908152604090205481565b34801561066357600080fd5b5061035f6106723660046153d2565b6101646020526000908152604090205481565b34801561069157600080fd5b506102b5611c13565b3480156106a657600080fd5b506104da611c22565b3480156106bb57600080fd5b50610288611c9e565b3480156106d057600080fd5b506102e2611cad565b3480156106e557600080fd5b5061035f6106f43660046153d2565b611d15565b34801561070557600080fd5b506102e2610714366004615527565b612122565b34801561072557600080fd5b506102e261212d565b34801561073a57600080fd5b506102e2610749366004615555565b6124f0565b34801561075a57600080fd5b5061035f600080516020615e5e83398151915281565b34801561077c57600080fd5b506102e2612528565b34801561079157600080fd5b506102886107a0366004615323565b612b1e565b3480156107b157600080fd5b5061035f600080516020615ec583398151915281565b3480156107d357600080fd5b506102e2612bdf565b3480156107e857600080fd5b506102e26107f7366004615323565b612c92565b34801561080857600080fd5b5061083d610817366004615323565b6101626020526000908152604090208054600182015460029092015460ff909116919083565b60408051931515845260208401929092529082015260600161026a565b34801561086657600080fd5b506108af610875366004615323565b6101616020526000908152604090208054600182015460028301546003840154600485015460059095015460ff9094169492939192909186565b6040805196151587526020870195909552938501929092526060840152608083015260a082015260c00161026a565b3480156108ea57600080fd5b50610166546102b5906001600160a01b031681565b34801561090b57600080fd5b5061025e61091a3660046153ef565b6134d3565b34801561092b57600080fd5b506102e261093a3660046153d2565b613501565b600061094a82613577565b92915050565b60606098805461095f906155c0565b80601f016020809104026020016040519081016040528092919081815260200182805461098b906155c0565b80156109d85780601f106109ad576101008083540402835291602001916109d8565b820191906000526020600020905b8154815290600101906020018083116109bb57829003601f168201915b5050505050905090565b60006109ed8261359c565b506000908152609c60205260409020546001600160a01b031690565b6000610a1482611a4c565b9050806001600160a01b0316836001600160a01b031603610a865760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610aa25750610aa281336134d3565b610b145760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a7d565b610b1e83836135c1565b505050565b610167546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf916004808201926020929091908290030181865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906155fa565b336040518363ffffffff1660e01b8152600401610bb8929190615613565b602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061562a565b610c455760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792041646d696e2063616e20706572666f726d20616374696f6e0000006044820152606401610a7d565b600090815261016160205260409020805460ff19166001179055565b610c6b338261362f565b610c875760405162461bcd60e51b8152600401610a7d90615647565b610b1e83838361368e565b6000610c9d83611b79565b8210610cff5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a7d565b506001600160a01b0391909116600090815260ca60209081526040808320938352929052205490565b610d306137f5565b61016a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d9b5760405162461bcd60e51b8152600401610a7d90615694565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dcd613854565b6001600160a01b031614610df35760405162461bcd60e51b8152600401610a7d906156ce565b610dfc81613870565b60408051600080825260208201909252610e1891839190613878565b50565b610167546001600160a01b03163314610e465760405162461bcd60e51b8152600401610a7d90615708565b600080516020615ec58339815191526000908152602052600080516020615dde83398151915254600080516020615f0d83398151915255565b610b1e838383604051806020016040528060008152506124f0565b610ea2615273565b50600080516020615ec58339815191526000908152602090815260408051808201909152600080516020615dde833981519152548152600080516020615f0d833981519152549181019190915290565b600154610100900460ff1615808015610f0f57506001805460ff16105b80610f2f5750610f1e306139e3565b158015610f2f57506001805460ff16145b610f925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a7d565b6001805460ff1916811790558015610fb4576001805461ff0019166101001790555b6110026040518060400160405280601081526020016f11db1bd8985b13995d1ddbdc9ad3919560821b8152506040518060400160405280600481526020016311d3919560e21b8152506139f2565b61100a613a23565b611012613a4a565b61101a613a23565b61016680546001600160a01b038086166001600160a01b0319928316179092556101678054928516929091169190911790556040805160c08101825261138881526161a86020820152620186a0918101919091526207a1206060820152622625a060808201526298968060a082015260005b600681101561118b5760006110a16101695490565b6000818152610162602090815260409182902061016654835163313ce56760e01b8152935194955090936001600160a01b039091169263313ce5679260048083019391928290030181865afa1580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111229190615738565b61112d90600a615855565b84836006811061113f5761113f615864565b602002015161114e919061587a565b60018083019190915560646002830155815460ff191617815561117661016980546001019055565b5050808061118390615891565b91505061108c565b50508015610b1e576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121e5760405162461bcd60e51b8152600401610a7d90615694565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611250613854565b6001600160a01b0316146112765760405162461bcd60e51b8152600401610a7d906156ce565b61127f82613870565b61128b82826001613878565b5050565b600061129a60cc5490565b82106112fd5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a7d565b60cc828154811061131057611310615864565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113bd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a7d565b50600080516020615e3e83398151915290565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061140190339060040161533c565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061562a565b15156001036114635760405162461bcd60e51b8152600401610a7d906158aa565b3361146d82611a4c565b6001600160a01b0316146114b95760405162461bcd60e51b815260206004820152601360248201527231b0b63632b91034b9903737ba1037bbb732b960691b6044820152606401610a7d565b6000818152610161602052604090205460ff161561150d5760405162461bcd60e51b81526020600482015260116024820152701d1bdad95b88189b1858dadb1a5cdd1959607a1b6044820152606401610a7d565b600061151882611a80565b90506000811161155e5760405162461bcd60e51b81526020600482015260116024820152704e6f2072657761726420746f206661726d60781b6044820152606401610a7d565b6000606461156d83600a61587a565b61157791906158ed565b905060006115866002836158ed565b61016654610167546040805163f481e86360e01b815290519394506001600160a01b0392831693634cc0f367938693169163f481e8639160048083019260209291908290030181865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116059190615901565b6040518363ffffffff1660e01b8152600401611622929190615613565b600060405180830381600087803b15801561163c57600080fd5b505af1158015611650573d6000803e3d6000fd5b5050610166546101675460408051631f2957b160e21b815290516001600160a01b039384169550634cc0f3679450869390921691637ca55ec4916004808201926020929091908290030181865afa1580156116af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d39190615901565b6040518363ffffffff1660e01b81526004016116f0929190615613565b600060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b5050610166546001600160a01b03169150634cc0f3679050611740848661591e565b336040518363ffffffff1660e01b815260040161175e929190615613565b600060405180830381600087803b15801561177857600080fd5b505af115801561178c573d6000803e3d6000fd5b505061016754604051630fa2d9ff60e41b8152600093508392506001600160a01b039091169063fa2d9ff0906117c690339060040161533c565b61010060405180830381865afa1580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118089190615931565b5093975091955060019450505050505b60648111611987576001600160a01b0382161561198757600061183b8284613a79565b905080156118f15760006064611851838a61587a565b61185b91906158ed565b61016654604051634cc0f36760e01b81529192506001600160a01b031690634cc0f3679061188f9084903090600401615613565b600060405180830381600087803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506001600160a01b03841660009081526101646020526040812080548392906118ea9084906159bb565b9091555050505b61016754604051630fa2d9ff60e41b81526001600160a01b039091169063fa2d9ff09061192290869060040161533c565b61010060405180830381865afa158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190615931565b5093995091975086955061197f945085935061589192505050565b915050611818565b506000868152610161602052604090819020426003909101555186907f18b858dd8351526e5e7ab4ec353f5309024990391b3eb1e14a753249345ac5da906119d29088815260200190565b60405180910390a2505050505050565b6119ea615273565b50600080516020615e5e8339815191526000908152602090815260408051808201909152600080516020615e1e8339815191525481527f7ae3c50dab2a4efefa12dcfbd46eb63dd82ec1805ae28aeb47fe2451bfc1cdaa549181019190915290565b600080611a588361418c565b90506001600160a01b03811661094a5760405162461bcd60e51b8152600401610a7d906159ce565b600081815261016160209081526040808320600180820154855261016284528285208351606081018552815460ff16151581529181015494820194909452600290930154918301919091529062015180611adc816101c261587a565b8360040154611aeb91906159bb565b421115611afd57506000949350505050565b60028301546005840154600385015460006103e8611b1b858561587a565b611b2591906158ed565b90506000611b3386836158ed565b9050600081611b42854261591e565b611b4c919061587a565b90506064886040015182611b60919061587a565b611b6a91906158ed565b9b9a5050505050505050505050565b60006001600160a01b038216611be35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a7d565b506001600160a01b03166000908152609b602052604090205490565b611c076137f5565b611c1160006141a7565b565b6034546001600160a01b031690565b611c2a615273565b50600080516020615dbe83398151915260009081526020908152604080518082019091527fe48cbce158a88b2ae025b935f2c891db41fa49d66e958301265adefc644e90755481527fe48cbce158a88b2ae025b935f2c891db41fa49d66e958301265adefc644e9076549181019190915290565b60606099805461095f906155c0565b610167546001600160a01b03163314611cd85760405162461bcd60e51b8152600401610a7d90615708565b600080516020615ec583398151915260009081526020819052600080516020615f0d8339815191528054600080516020615dde8339815191525555565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090611d4b90869060040161533c565b61010060405180830381865afa158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d9190615931565b5050600080516020615ec5833981519152600090815260208181526101675460408051636ae994a760e01b81529051979a50600080516020615dde83398151915299509297506001600160a01b031695636ae994a7955060048084019550919350918290030181865afa158015611e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2c919061562a565b90508160010154600003611e4557506000949350505050565b610167546040805163238d642760e11b815290516000926001600160a01b03169163471ac84e9160048083019260209291908290030181865afa158015611e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb491906155fa565b9050811515600003611ecc5750600095945050505050565b6001600160a01b038616600090815261016560205260409020548111611ef85750600095945050505050565b6000846006811115611f0c57611f0c615a00565b03611f1d5750600095945050505050565b60008060008060008061016760009054906101000a90046001600160a01b03166001600160a01b031663d35cb1ad6040518163ffffffff1660e01b815260040160c060405180830381865afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e9190615a16565b949a5092985090965094509250905060008060018c6006811115611fc457611fc4615a00565b03611fe9578a54889250606490611fdc90600361587a565b611fe691906158ed565b90505b60028c6006811115611ffd57611ffd615a00565b03612022578a5487925060649061201590600761587a565b61201f91906158ed565b90505b60038c600681111561203657612036615a00565b0361205b578a5486925060649061204e90600c61587a565b61205891906158ed565b90505b60048c600681111561206f5761206f615a00565b03612094578a5485925060649061208790601261587a565b61209191906158ed565b90505b60058c60068111156120a8576120a8615a00565b036120cd578a548492506064906120c090601a61587a565b6120ca91906158ed565b90505b60068c60068111156120e1576120e1615a00565b03612106578a548392506064906120f990602261587a565b61210391906158ed565b90505b61211082826158ed565b9e9d5050505050505050505050505050565b61128b3383836141f9565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061215e90339060040161533c565b602060405180830381865afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f919061562a565b15156001036121c05760405162461bcd60e51b8152600401610a7d906158aa565b336000908152610164602090815260408083205461016754825163f481e86360e01b815292519194936001600160a01b039091169263f481e86392600480830193928290030181865afa15801561221b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223f9190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316637ca55ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190615901565b9050600083116123075760405162461bcd60e51b8152602060048201526017602482015276139bc81c995dd85c99081d1bc818994818db185a5b5959604a1b6044820152606401610a7d565b6000606461231685600a61587a565b61232091906158ed565b9050600061232f6002836158ed565b6101665460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906123639087908590600401615a60565b6020604051808303816000875af1158015612382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a6919061562a565b506101665460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906123da9086908590600401615a60565b6020604051808303816000875af11580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d919061562a565b50610166546001600160a01b031663a9059cbb3361243b858961591e565b6040518363ffffffff1660e01b8152600401612458929190615a60565b6020604051808303816000875af1158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061562a565b5033600081815261016460205260408120557fba8de60c3403ec381d1d484652ea1980e3c3e56359195c92525bff4ce47ad98e6124d8848861591e565b60405190815260200160405180910390a25050505050565b6124fa338361362f565b6125165760405162461bcd60e51b8152600401610a7d90615647565b612522848484846142c3565b50505050565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc9061255990339060040161533c565b602060405180830381865afa158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259a919061562a565b15156001036125bb5760405162461bcd60e51b8152600401610a7d906158aa565b61016754604051630fa2d9ff60e41b81526000916001600160a01b03169063fa2d9ff0906125ed90339060040161533c565b61010060405180830381865afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f9190615931565b5050600080516020615ec583398151915260009081526020819052939650600080516020615dde83398151915295509293506126709250339150611d159050565b3360009081526101636020908152604080832054815160e08101835293845261c3509284019290925262030d4090830152620f42406060830152624c4b40608083015263017d784060a08301526305f5e10060c0830152919250826127125760405162461bcd60e51b8152602060048201526018602482015277139bc814995dd85c990818d85b8818994818db185a5b595960421b6044820152606401610a7d565b60005b600781101561284f578086600681111561273157612731615a00565b1480156127505750600086600681111561274d5761274d615a00565b14155b1561283d5761016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cd9190615738565b6127d890600a615855565b8282600781106127ea576127ea615864565b602002015163ffffffff166127ff919061587a565b83101561283d5760405162461bcd60e51b815260206004820152600c60248201526b4e6f7420456c696769626c6560a01b6044820152606401610a7d565b8061284781615891565b915050612715565b506000606461285f85600a61587a565b61286991906158ed565b905060006128786002836158ed565b61016654610167546040805163f481e86360e01b815290519394506001600160a01b039283169363a9059cbb939092169163f481e863916004808201926020929091908290030181865afa1580156128d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f89190615901565b836040518363ffffffff1660e01b8152600401612916929190615a60565b6020604051808303816000875af1158015612935573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612959919061562a565b50610166546101675460408051631f2957b160e21b815290516001600160a01b039384169363a9059cbb931691637ca55ec49160048083019260209291908290030181865afa1580156129b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d49190615901565b836040518363ffffffff1660e01b81526004016129f2929190615a60565b6020604051808303816000875af1158015612a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a35919061562a565b50610166546001600160a01b031663a9059cbb33612a53858961591e565b6040518363ffffffff1660e01b8152600401612a70929190615a60565b6020604051808303816000875af1158015612a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab3919061562a565b5033600090815261016560205260408120429055600187018054879290612adb90849061591e565b909155505060405185815233907feff26bb1aaac7ce27452afaf8402dbd160686540ece1c14d857cf0c272b5cba49060200160405180910390a250505050505050565b6060612b298261359c565b6000612b336142f6565b60008481526101616020908152604091829020825160c081018452815460ff1615158152600182015492810183905260028201549381019390935260038101546060840152600481015460808401526005015460a083015282519293509091612bab5760405180602001604052806000815250612bd6565b82612bb582614316565b604051602001612bc6929190615a79565b6040516020818303038152906040525b95945050505050565b612be76137f5565b600080516020615e5e833981519152600090815260205261016654600080516020615e1e833981519152805460405163a9059cbb60e01b815291926001600160a01b03169163a9059cbb91612c4191339190600401615a60565b6020604051808303816000875af1158015612c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c84919061562a565b506000808255600190910155565b61016754604051630a1b99af60e21b81526001600160a01b039091169063286e66bc90612cc390339060040161533c565b602060405180830381865afa158015612ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d04919061562a565b1515600103612d255760405162461bcd60e51b8152600401610a7d906158aa565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090612d5b90339060040161533c565b61010060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d9190615931565b5050610167546040805163f481e86360e01b815290519799509497506000966001600160a01b03909116955063f481e8639460048082019550602094509192508290030181865afa158015612df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1a9190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316637ca55ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e969190615901565b9050600061016760009054906101000a90046001600160a01b03166001600160a01b0316636ae994a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f12919061562a565b6000878152610162602052604090209091508115612f625760405162461bcd60e51b815260206004820152600d60248201526c13585c9ad95d0818db1bdcd959609a1b6044820152606401610a7d565b85612fa75760405162461bcd60e51b8152602060048201526015602482015274149959da5cdd1c985d1a5bdb881c995c5d5a5c9959605a1b6044820152606401610a7d565b6000816001015411612fea5760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a590818d85c9960a21b6044820152606401610a7d565b805460ff166130325760405162461bcd60e51b815260206004820152601460248201527343617264206973206e6f74206d696e7461626c6560601b6044820152606401610a7d565b6040805160e081018252620186a0815262030d406020820152620f424091810191909152624c4b4060608201526301312d0060808201526305f5e10060a0820152631dcd650060c082015260005b60078110156131bb578087600681111561309c5761309c615a00565b036131a95761016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131199190615738565b61312490600a615855565b82826007811061313657613136615864565b602002015163ffffffff1661314b919061587a565b3360009081526101636020526040902054600185015461316b91906159bb565b11156131a95760405162461bcd60e51b815260206004820152600d60248201526c26b0bc10213abc9022b93937b960991b6044820152606401610a7d565b806131b381615891565b915050613080565b5060006064836001015460056131d1919061587a565b6131db91906158ed565b6101665460018501549192506001600160a01b0316906323b872dd903390309061320690869061591e565b6040518463ffffffff1660e01b815260040161322493929190615aa8565b6020604051808303816000875af1158015613243573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613267919061562a565b5061328d60648460010154601161327e919061587a565b61328891906158ed565b6143a8565b613296816143ed565b60006064846001015460146132ab919061587a565b6132b591906158ed565b905060006132c46002836158ed565b6101665460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906132f8908b908590600401615a60565b6020604051808303816000875af1158015613317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333b919061562a565b506101665460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061336f908a908590600401615a60565b6020604051808303816000875af115801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b2919061562a565b506101665460018601546001600160a01b03909116906342966c68906064906133dc90603a61587a565b6133e691906158ed565b6040518263ffffffff1660e01b815260040161340491815260200190565b600060405180830381600087803b15801561341e57600080fd5b505af1158015613432573d6000803e3d6000fd5b5050505060006134426101685490565b60008181526101616020526040902060018082018f905588015460058201554260048201819055600382015590915061347961473d565b600282015561348d61016880546001019055565b61349733836147f7565b604051829033907fe3d4187f6ca4248660cc0ac8b8056515bac4a8132be2eca31d6d0cc170722a7e90600090a350505050505050505050505050565b6001600160a01b039182166000908152609d6020908152604080832093909416825291909152205460ff1690565b6135096137f5565b6001600160a01b03811661356e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7d565b610e18816141a7565b60006001600160e01b0319821663780e9d6360e01b148061094a575061094a82614811565b6135a581614861565b610e185760405162461bcd60e51b8152600401610a7d906159ce565b6000818152609c6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906135f682611a4c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061363b83611a4c565b9050806001600160a01b0316846001600160a01b03161480613662575061366281856134d3565b806136865750836001600160a01b031661367b846109e2565b6001600160a01b0316145b949350505050565b826001600160a01b03166136a182611a4c565b6001600160a01b0316146136c75760405162461bcd60e51b8152600401610a7d90615acc565b6001600160a01b0382166137295760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7d565b613736838383600161487e565b826001600160a01b031661374982611a4c565b6001600160a01b03161461376f5760405162461bcd60e51b8152600401610a7d90615acc565b6000818152609c6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609b8552838620805460001901905590871680865283862080546001019055868652609a9094528285208054909216841790915590518493600080516020615ea583398151915291a4610b1e838383600161488a565b336137fe611c13565b6001600160a01b031614611c115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7d565b600080516020615e3e833981519152546001600160a01b031690565b610e186137f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156138ab57610b1e83614979565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613905575060408051601f3d908101601f19168201909252613902918101906155fa565b60015b6139685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a7d565b600080516020615e3e83398151915281146139d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a7d565b50610b1e838383614a13565b6001600160a01b03163b151590565b600154610100900460ff16613a195760405162461bcd60e51b8152600401610a7d90615b11565b61128b8282614a38565b600154610100900460ff16611c115760405162461bcd60e51b8152600401610a7d90615b11565b600154610100900460ff16613a715760405162461bcd60e51b8152600401610a7d90615b11565b611c11614a78565b61016754604051630fa2d9ff60e41b815260009182916001600160a01b039091169063fa2d9ff090613aaf90869060040161533c565b61010060405180830381865afa158015613acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af19190615931565b50939650505060018810801594509250613b0f915050575060058411155b8015613bc2575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8e9190615738565b613b9990600a615855565b613ba59061138861587a565b6001600160a01b0384166000908152610163602052604090205410155b15613bd157600591505061094a565b60068410158015613be35750600a8411155b8015613c0157506001816006811115613bfe57613bfe615a00565b10155b8015613cb4575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615738565b613c8b90600a615855565b613c97906161a861587a565b6001600160a01b0384166000908152610163602052604090205410155b15613cc357600191505061094a565b600b8410158015613cd5575060148411155b8015613cf357506002816006811115613cf057613cf0615a00565b10155b8015613da7575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d729190615738565b613d7d90600a615855565b613d8a90620186a061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613db657600191505061094a565b60158410158015613dc8575060288411155b8015613de657506003816006811115613de357613de3615a00565b10155b8015613e9a575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e659190615738565b613e7090600a615855565b613e7d906207a12061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613ea957600191505061094a565b60298410158015613ebb5750603c8411155b8015613ed957506004816006811115613ed657613ed6615a00565b10155b8015613f8d575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f589190615738565b613f6390600a615855565b613f7090622625a061587a565b6001600160a01b0384166000908152610163602052604090205410155b15613f9c57600191505061094a565b603d8410158015613fae575060508411155b8015613fcc57506005816006811115613fc957613fc9615a00565b10155b8015614080575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404b9190615738565b61405690600a615855565b614063906298968061587a565b6001600160a01b0384166000908152610163602052604090205410155b1561408f57600191505061094a565b605184101580156140a1575060648411155b80156140be575060068160068111156140bc576140bc615a00565b145b8015614173575061016660009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413d9190615738565b61414890600a615855565b614156906302faf08061587a565b6001600160a01b0384166000908152610163602052604090205410155b1561418257600191505061094a565b5060009392505050565b6000908152609a60205260409020546001600160a01b031690565b603480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036142565760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610a7d565b6001600160a01b038381166000818152609d6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6142ce84848461368e565b6142da84848484614aa8565b6125225760405162461bcd60e51b8152600401610a7d90615b5c565b6060604051806060016040528060288152602001615ee560289139905090565b6060600061432383614bb0565b60010190506000816001600160401b0381111561434257614342615428565b6040519080825280601f01601f19166020018201604052801561436c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461437657509392505050565b600080516020615ec583398151915260009081526020819052600080516020615dde8339815191528054909183918391906143e49084906159bb565b90915550505050565b60008061016a60009054906101000a90046001600160a01b03166001600160a01b031663dc3676b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015614444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061446891906155fa565b9050600061016a60009054906101000a90046001600160a01b03166001600160a01b03166316fed3e26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e49190615901565b905060005b828110156146375761016a5460405163e4305a2960e01b815260048101839052600091829182916001600160a01b03169063e4305a2990602401608060405180830381865afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145649190615bae565b93509350935050600082826064868c61457d919061587a565b61458791906158ed565b61459191906158ed565b61459b919061587a565b90506145a781896159bb565b9750806000036145ba5750505050614625565b61016a54604051635b2c9e4760e11b815260048101879052602481018390526001600160a01b039091169063b6593c8e90604401600060405180830381600087803b15801561460857600080fd5b505af115801561461c573d6000803e3d6000fd5b50505050505050505b8061462f81615891565b9150506144e9565b506101665461016a546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92614673923392909116908890600401615aa8565b6020604051808303816000875af1158015614692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146b6919061562a565b50610166546001600160a01b03166323b872dd33836146d5878961591e565b6040518463ffffffff1660e01b81526004016146f393929190615aa8565b6020604051808303816000875af1158015614712573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614736919061562a565b5050505050565b60008061474b6103e8614c86565b90506102bb811161475e57600591505090565b6102bb8111801561477157506103848111155b1561477e57600691505090565b6103848111801561479157506103df8111155b1561479e57600791505090565b6103df811180156147b157506103e48111155b156147be57600891505090565b6103e4811180156147d157506103e68111155b156147de57600a91505090565b806103e7036147ef57600f91505090565b600891505090565b61128b828260405180602001604052806000815250614cf0565b60006001600160e01b031982166380ac58cd60e01b148061484257506001600160e01b03198216635b5e139f60e01b145b8061094a57506301ffc9a760e01b6001600160e01b031983161461094a565b60008061486d8361418c565b6001600160a01b0316141592915050565b61252284848484614d23565b600082815261016160205260409020600501546001600160a01b0385166148df576001600160a01b03841660009081526101636020526040812080548392906148d49084906159bb565b909155506147369050565b6001600160a01b038416614916576001600160a01b03851660009081526101636020526040812080548392906148d490849061591e565b6001600160a01b038516600090815261016360205260408120805483929061493f90849061591e565b90915550506001600160a01b038416600090815261016360205260408120805483929061496d9084906159bb565b90915550505050505050565b614982816139e3565b6149e45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a7d565b600080516020615e3e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b614a1c83614e50565b600082511180614a295750805b15610b1e576125228383614e90565b600154610100900460ff16614a5f5760405162461bcd60e51b8152600401610a7d90615b11565b6098614a6b8382615c32565b506099610b1e8282615c32565b600154610100900460ff16614a9f5760405162461bcd60e51b8152600401610a7d90615b11565b611c11336141a7565b6000614abc846001600160a01b03166139e3565b15614ba557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614af3903390899088908890600401615cf1565b6020604051808303816000875af1925050508015614b2e575060408051601f3d908101601f19168201909252614b2b91810190615d24565b60015b614b8b573d808015614b5c576040519150601f19603f3d011682016040523d82523d6000602084013e614b61565b606091505b508051600003614b835760405162461bcd60e51b8152600401610a7d90615b5c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613686565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614bef5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614c19576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310614c3757662386f26fc10000830492506010015b6305f5e1008310614c4f576305f5e100830492506008015b6127108310614c6357612710830492506004015b60648310614c75576064830492506002015b600a831061094a5760010192915050565b610160805460009182614c9883615891565b909155505061016054604080514260208201526001600160601b03193360601b1691810191909152605481019190915282906074016040516020818303038152906040528051906020012060001c61094a9190615d41565b614cfa8383614ebc565b614d076000848484614aa8565b610b1e5760405162461bcd60e51b8152600401610a7d90615b5c565b6001811115614d925760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610a7d565b816001600160a01b038516614dee57614de98160cc8054600083815260cd60205260408120829055600182018355919091527f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe0155565b614e11565b836001600160a01b0316856001600160a01b031614614e1157614e118582614fcf565b6001600160a01b038416614e2d57614e288161506c565b614736565b846001600160a01b0316846001600160a01b03161461473657614736848261511b565b614e5981614979565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614eb58383604051806060016040528060278152602001615e7e6027913961515f565b9392505050565b6001600160a01b038216614f125760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a7d565b614f1b81614861565b15614f385760405162461bcd60e51b8152600401610a7d90615d55565b614f4660008383600161487e565b614f4f81614861565b15614f6c5760405162461bcd60e51b8152600401610a7d90615d55565b6001600160a01b0382166000818152609b6020908152604080832080546001019055848352609a90915280822080546001600160a01b031916841790555183929190600080516020615ea5833981519152908290a461128b60008383600161488a565b60006001614fdc84611b79565b614fe6919061591e565b600083815260cb6020526040902054909150808214615039576001600160a01b038416600090815260ca60209081526040808320858452825280832054848452818420819055835260cb90915290208190555b50600091825260cb602090815260408084208490556001600160a01b03909416835260ca81528383209183525290812055565b60cc5460009061507e9060019061591e565b600083815260cd602052604081205460cc80549394509092849081106150a6576150a6615864565b906000526020600020015490508060cc83815481106150c7576150c7615864565b600091825260208083209091019290925582815260cd909152604080822084905585825281205560cc8054806150ff576150ff615d8b565b6001900381819060005260206000200160009055905550505050565b600061512683611b79565b6001600160a01b03909316600090815260ca60209081526040808320868452825280832085905593825260cb9052919091209190915550565b6060600080856001600160a01b03168560405161517c9190615da1565b600060405180830381855af49150503d80600081146151b7576040519150601f19603f3d011682016040523d82523d6000602084013e6151bc565b606091505b50915091506151cd868383876151d7565b9695505050505050565b6060831561524457825160000361523d576151f1856139e3565b61523d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a7d565b5081613686565b61368683838151156152595781518083602001fd5b8060405162461bcd60e51b8152600401610a7d9190615310565b604051806040016040528060008152602001600081525090565b6001600160e01b031981168114610e1857600080fd5b6000602082840312156152b557600080fd5b8135614eb58161528d565b60005b838110156152db5781810151838201526020016152c3565b50506000910152565b600081518084526152fc8160208601602086016152c0565b601f01601f19169290920160200192915050565b602081526000614eb560208301846152e4565b60006020828403121561533557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610e1857600080fd5b6000806040838503121561537857600080fd5b823561538381615350565b946020939093013593505050565b6000806000606084860312156153a657600080fd5b83356153b181615350565b925060208401356153c181615350565b929592945050506040919091013590565b6000602082840312156153e457600080fd5b8135614eb581615350565b6000806040838503121561540257600080fd5b823561540d81615350565b9150602083013561541d81615350565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261544f57600080fd5b81356001600160401b038082111561546957615469615428565b604051601f8301601f19908116603f0116810190828211818310171561549157615491615428565b816040528381528660208588010111156154aa57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156154dd57600080fd5b82356154e881615350565b915060208301356001600160401b0381111561550357600080fd5b61550f8582860161543e565b9150509250929050565b8015158114610e1857600080fd5b6000806040838503121561553a57600080fd5b823561554581615350565b9150602083013561541d81615519565b6000806000806080858703121561556b57600080fd5b843561557681615350565b9350602085013561558681615350565b92506040850135915060608501356001600160401b038111156155a857600080fd5b6155b48782880161543e565b91505092959194509250565b600181811c908216806155d457607f821691505b6020821081036155f457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561560c57600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b60006020828403121561563c57600080fd5b8151614eb581615519565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c90820152600080516020615dfe83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020615dfe83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60208082526016908201527513db9b1e481d985b1a185b1b184818d85b8818d85b1b60521b604082015260600190565b60006020828403121561574a57600080fd5b815160ff81168114614eb557600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156157ac5781600019048211156157925761579261575b565b8085161561579f57918102915b93841c9390800290615776565b509250929050565b6000826157c35750600161094a565b816157d05750600061094a565b81600181146157e657600281146157f05761580c565b600191505061094a565b60ff8411156158015761580161575b565b50506001821b61094a565b5060208310610133831016604e8410600b841016171561582f575081810a61094a565b6158398383615771565b806000190482111561584d5761584d61575b565b029392505050565b6000614eb560ff8416836157b4565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761094a5761094a61575b565b6000600182016158a3576158a361575b565b5060010190565b6020808252601390820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826158fc576158fc6158d7565b500490565b60006020828403121561591357600080fd5b8151614eb581615350565b8181038181111561094a5761094a61575b565b600080600080600080600080610100898b03121561594e57600080fd5b885161595981615519565b60208a015190985061596a81615519565b60408a01519097506007811061597f57600080fd5b60608a015190965061599081615350565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b8082018082111561094a5761094a61575b565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b60008060008060008060c08789031215615a2f57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6001600160a01b03929092168252602082015260400190565b60008351615a8b8184602088016152c0565b835190830190615a9f8183602088016152c0565b01949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008060008060808587031215615bc457600080fd5b505082516020840151604085015160609095015191969095509092509050565b601f821115610b1e57600081815260208120601f850160051c81016020861015615c0b5750805b601f850160051c820191505b81811015615c2a57828155600101615c17565b505050505050565b81516001600160401b03811115615c4b57615c4b615428565b615c5f81615c5984546155c0565b84615be4565b602080601f831160018114615c945760008415615c7c5750858301515b600019600386901b1c1916600185901b178555615c2a565b600085815260208120601f198616915b82811015615cc357888601518255948401946001909101908401615ca4565b5085821015615ce15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906151cd908301846152e4565b600060208284031215615d3657600080fd5b8151614eb58161528d565b600082615d5057615d506158d7565b500690565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b60008251615db38184602087016152c0565b919091019291505056feef78ff2707f55cf683ecba27f753a1f73d88a2972299daeedcdcce2c52b7821d335d3c6b885408497fbfb0b6def492ee75738904e5f4f2ba351dbd9fcd1022c046756e6374696f6e206d7573742062652063616c6c6564207468726f756768207ae3c50dab2a4efefa12dcfbd46eb63dd82ec1805ae28aeb47fe2451bfc1cda9360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc791b07db9f5ba47b7333684f8aab1753657d4cf52dbb1ca2e58c7c7643deb25c416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4caf09f7dd9cf5930a0d30d4dba10a4d06c1e6d90491f8198b355f99152771b068747470733a2f2f676c6f62616c6e6574776f726b2e66696e616e63652f6170692f696d6167652f335d3c6b885408497fbfb0b6def492ee75738904e5f4f2ba351dbd9fcd1022c1a264697066735822122048de45b7565bae2582989b8b4007e6760659f5d061687d3351540bdd63ae6e4864736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
