{
  "_format": "hh-sol-artifact-1",
  "contractName": "SomaSwapPair",
  "sourceName": "contracts/soma/SomaSwap/core/SomaSwapPair.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "BalanceChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "Burn",
      "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": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "prevPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "newPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RequiredPrivilegesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Seized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0In",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1In",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount0Out",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount1Out",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint112",
          "name": "reserve0",
          "type": "uint112"
        },
        {
          "indexed": false,
          "internalType": "uint112",
          "name": "reserve1",
          "type": "uint112"
        }
      ],
      "name": "Sync",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_PRIVILEGES",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINIMUM_LIQUIDITY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SOMA",
      "outputs": [
        {
          "internalType": "contract ISOMA",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "canTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "pos",
          "type": "uint32"
        }
      ],
      "name": "checkpoints",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "fromBlock",
              "type": "uint32"
            },
            {
              "internalType": "uint224",
              "name": "balance",
              "type": "uint224"
            }
          ],
          "internalType": "struct ERC20HistoryUpgradeable.Checkpoint",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getPastBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getPastTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReserves",
      "outputs": [
        {
          "internalType": "uint112",
          "name": "_reserve0",
          "type": "uint112"
        },
        {
          "internalType": "uint112",
          "name": "_reserve1",
          "type": "uint112"
        },
        {
          "internalType": "uint32",
          "name": "_blockTimestampLast",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token1",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "kLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "numCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price0CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price1CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredPrivileges",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "seize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "skim",
      "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": [
        {
          "internalType": "uint256",
          "name": "amount0Out",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount1Out",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "swap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sync",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token0",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "newRequiredPrivileges",
          "type": "bytes32"
        }
      ],
      "name": "updateRequiredPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf6080526001600160401b0360a05234801561003357600080fd5b5060805160a05161521661009f60003960006104360152600081816104f801528181610ebc015281816110af0152818161114b0152818161174c01528181611b9001528181611c2c015281816120b00152818161269d0152818161282101526135e101526152166000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c80636a62784211610182578063ac9650d8116100e9578063d505accf116100a2578063eec47d601161007c578063eec47d60146106c6578063f1127ed8146106d0578063f37d11cc1461070d578063fff6cae91461072057600080fd5b8063d505accf1461068d578063dd62ed3e146106a0578063eb9253c0146106b357600080fd5b8063ac9650d81461061f578063ba9a7a561461063f578063bc25cf7714610648578063c45a01551461065b578063c72460ee1461066f578063d21220a71461067957600080fd5b806389afcb441161013b57806389afcb44146105a35780638e539e8c146105cb57806391d14854146105de57806395d89b41146105f1578063a457c2d7146105f9578063a9059cbb1461060c57600080fd5b80636a6278421461051a5780636fcfff451461052d57806370a08231146105555780637464fc3d1461057e5780637ecebe00146105885780638456cb591461059b57600080fd5b80632772ce9d116102415780633f4ba83a116101fa5780635909c0d5116101d45780635909c0d5146104d75780635a3d5493146104e15780635c975abb146104eb57806363727fc2146104f357600080fd5b80633f4ba83a146104a9578063485cc955146104b15780634b63885a146104c457600080fd5b80632772ce9d1461041e5780632a7a0c68146104315780633013928014610458578063313ce5671461047f5780633644e5151461048e578063395093511461049657600080fd5b80630dfe1681116102935780630dfe16811461039557806318160ddd146103c15780631e26571f146103c9578063227102a6146103d157806323b872dd146103f8578063248a9ca31461040b57600080fd5b806301ffc9a7146102db578063022c0d9f1461030357806306fdde03146103185780630902f1ac1461032d578063095ea7b3146103615780630df8699914610374575b600080fd5b6102ee6102e936600461483e565b610728565b60405190151581526020015b60405180910390f35b61031661031136600461487d565b610753565b005b610320610d20565b6040516102fa9190614963565b610335610db2565b604080516001600160701b03948516815293909216602084015263ffffffff16908201526060016102fa565b6102ee61036f366004614976565b610ddd565b610387610382366004614976565b610df5565b6040519081526020016102fa565b6102f6546103a9906001600160a01b031681565b6040516001600160a01b0390911681526020016102fa565b603554610387565b610387610e3f565b6103877ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b6102ee6104063660046149a2565b610e94565b6103876104193660046149e3565b610eb8565b6102ee61042c3660046149e3565b610faa565b6103877f000000000000000000000000000000000000000000000000000000000000000081565b6103877fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b604051601281526020016102fa565b61038761106d565b6102ee6104a4366004614976565b61107c565b61031661109e565b6103166104bf3660046149fc565b61122d565b6102ee6104d2366004614a35565b611748565b6103876102f95481565b6103876102fa5481565b6102ee611850565b6103a97f000000000000000000000000000000000000000000000000000000000000000081565b610387610528366004614a35565b61185a565b61054061053b366004614a35565b611b3e565b60405163ffffffff90911681526020016102fa565b610387610563366004614a35565b6001600160a01b031660009081526033602052604090205490565b6103876102fb5481565b610387610596366004614a35565b611b60565b610316611b7f565b6105b66105b1366004614a35565b611d0b565b604080519283526020830191909152016102fa565b6103876105d93660046149e3565b612080565b6102ee6105ec366004614a52565b6120ac565b6103206121a3565b6102ee610607366004614976565b6121b2565b6102ee61061a366004614976565b61222d565b61063261062d366004614a77565b61223b565b6040516102fa9190614aec565b6103876103e881565b610316610656366004614a35565b612330565b6102f5546103a9906001600160a01b031681565b6103876102295481565b6102f7546103a9906001600160a01b031681565b61031661069b366004614b4e565b612449565b6103876106ae3660046149fc565b6125cc565b6103166106c1366004614976565b6125f7565b61038761025d5481565b6106e36106de366004614bc5565b612798565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016102fa565b6102ee61071b3660046149a2565b61281c565b6103166129c4565b60006001600160e01b031982166301a8853560e51b148061074d575061074d82612aec565b92915050565b6102fc541561077d5760405162461bcd60e51b815260040161077490614bfc565b60405180910390fd5b60016102fc5561078b612b47565b61079481611748565b6107e05760405162461bcd60e51b815260206004820152601b60248201527f72657175697265642070726976696c65676573206e6f74206d657400000000006044820152606401610774565b60008611806107ef5750600085115b6108475760405162461bcd60e51b8152602060048201526024808201527f536f6d61537761703a20494e53554646494349454e545f4f55545055545f414d60448201526313d5539560e21b6064820152608401610774565b600080610852610db2565b5091509150816001600160701b0316881080156108775750806001600160701b031687105b6108c35760405162461bcd60e51b815260206004820181905260248201527f536f6d61537761703a20494e53554646494349454e545f4c49515549444954596044820152606401610774565b6108ee6040518060800160405280600081526020016000815260200160008152602001600081525090565b6102f6546102f7546001600160a01b039182169190811690891682148015906109295750806001600160a01b0316896001600160a01b031614155b61096c5760405162461bcd60e51b8152602060048201526014602482015273536f6d61537761703a20494e56414c49445f544f60601b6044820152606401610774565b8a1561097d5761097d828a8d612bcc565b891561098e5761098e818a8c612bcc565b86156109fb57604051632fd4324960e01b81526001600160a01b038a1690632fd43249906109c89033908f908f908e908e90600401614c26565b600060405180830381600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190614c72565b83526040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614c72565b602084015250610ae89050896001600160701b038516614ca1565b815111610af6576000610b15565b610b09896001600160701b038516614ca1565b8151610b159190614ca1565b6040820152610b2d886001600160701b038416614ca1565b816020015111610b3e576000610b60565b610b51886001600160701b038416614ca1565b8160200151610b609190614ca1565b60608201526040810151151580610b7b575060008160600151115b610bd35760405162461bcd60e51b815260206004820152602360248201527f536f6d61537761703a20494e53554646494349454e545f494e5055545f414d4f60448201526215539560ea1b6064820152608401610774565b6000610c04610bf060038460400151612d1790919063ffffffff16565b8351610bfe906103e8612d17565b90612d23565b90506000610c34610c2360038560600151612d1790919063ffffffff16565b6020850151610bfe906103e8612d17565b9050610c59620f4240610c536001600160701b03888116908816612d17565b90612d17565b610c638383612d17565b1015610c9f5760405162461bcd60e51b815260206004820152600b60248201526a536f6d61537761703a204b60a81b6044820152606401610774565b5050610cb5816000015182602001518585612d2f565b604081810151606080840151835192835260208301528183018c905281018a905290516001600160a01b0389169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a3505060006102fc5550505050505050565b606060368054610d2f90614cb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5b90614cb4565b8015610da85780601f10610d7d57610100808354040283529160200191610da8565b820191906000526020600020905b815481529060010190602001808311610d8b57829003601f168201915b5050505050905090565b6102f8546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600033610deb818585612f1e565b5060019392505050565b6000438210610e165760405162461bcd60e51b815260040161077490614ce8565b6001600160a01b038316600090815260c960205260409020610e389083613042565b9392505050565b6102f6546000908190610e5a906001600160a01b03166130ff565b6102f754909150600090610e76906001600160a01b03166130ff565b9050610e8d8282610e8761025e5490565b91171790565b9250505090565b600033610ea28582856131bd565b610ead858585613237565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190614d29565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b8152600401610f6991815260200190565b602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614c72565b6000610fba61025d546105ec3390565b80610fea5750610fea7ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1336120ac565b61105c5760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f207468697300000000000000006064820152608401610774565b61106582613416565b506001919050565b600061107761345b565b905090565b600033610deb81858561108f83836125cc565b6110999190614d46565b612f1e565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112f9190614d29565b6001600160a01b031614806111d65750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190614d29565b6001600160a01b0316145b6112225760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610774565b61122a6134d6565b50565b600054610100900460ff161580801561124d5750600054600160ff909116105b806112675750303b158015611267575060005460ff166001145b6112ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610774565b6000805460ff1916600117905580156112ed576000805461ff0019166101001790555b6102f58054336001600160a01b0319918216179091556102f6805482166001600160a01b038681169182179092556102f780549093169185169190911790915560408051808201825260088152670534f4d41537761760c41b602082015281516306fdde0360e01b8152915190926060926000926306fdde039160048082019286929091908290030181865afa15801561138b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b39190810190614d6f565b905060006102f760009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114339190810190614d6f565b905083600083511180611447575060008251115b611460576040518060200160405280600081525061147c565b6040518060400160405280600281526020016101d160f51b8152505b600084511161149a576040518060200160405280600081525061149c565b835b600085511180156114ae575060008451115b6114c757604051806020016040528060008152506114e4565b6040518060400160405280600381526020016201016960ed1b8152505b60008551116115025760405180602001604052806000815250611504565b845b604051602001611518959493929190614e1c565b6040516020818303038152906040529350505060006102f660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611581573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115a99190810190614d6f565b905060006102f760009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116299190810190614d6f565b90506000825111611649576040518060200160405280600081525061164b565b815b6000835111801561165d575060008251115b6116765760405180602001604052806000815250611691565b604051806040016040528060018152602001602d60f81b8152505b60008351116116af57604051806020016040528060008152506116b1565b825b6040516020016116c393929190614e87565b60408051601f1981840301815282820190915260088252670534f4d41737761760c41b602083015293506116fb925090508383613528565b50508015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc9190614d29565b6001600160a01b031663253bd7b7836117e3610e3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614eca565b60006110776135dd565b60006102fc5460001461187f5760405162461bcd60e51b815260040161077490614bfc565b60016102fc55600080611890610db2565b506102f6546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119079190614c72565b6102f7546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197a9190614c72565b90506000611991836001600160701b038716612d23565b905060006119a8836001600160701b038716612d23565b905060006119b68787613671565b905060006119c360355490565b905080600003611a06576119e56103e8610bfe6119e08787612d17565b6137b0565b6102f554909950611a01906001600160a01b03166103e8613820565b611a4d565b611a4a6001600160701b038916611a1d8684612d17565b611a279190614f02565b6001600160701b038916611a3b8685612d17565b611a459190614f02565b61382e565b98505b60008911611aad5760405162461bcd60e51b815260206004820152602760248201527f536f6d61537761703a20494e53554646494349454e545f4c495155494449545960448201526617d3525395115160ca1b6064820152608401610774565b611ab78a8a613820565b611ac386868a8a612d2f565b8115611aef576102f854611aea906001600160701b0380821691600160701b900416612d17565b6102fb555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060006102fc5550949695505050505050565b6001600160a01b038116600090815260c9602052604081205461074d90613844565b6001600160a01b038116600090815261012e602052604081205461074d565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c109190614d29565b6001600160a01b03161480611cb75750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac9190614d29565b6001600160a01b0316145b611d035760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610774565b61122a6138ad565b6000806102fc54600014611d315760405162461bcd60e51b815260040161077490614bfc565b60016102fc55600080611d42610db2565b506102f6546102f7546040516370a0823160e01b81523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190614c72565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190614c72565b30600090815260336020526040812054919250611e4d8888613671565b90506000611e5a60355490565b905080611e678487612d17565b611e719190614f02565b9a5080611e7e8486612d17565b611e889190614f02565b995060008b118015611e9a575060008a115b611ef65760405162461bcd60e51b815260206004820152602760248201527f536f6d61537761703a20494e53554646494349454e545f4c495155494449545960448201526617d0955493915160ca1b6064820152608401610774565b611f0030846138ea565b611f0b878d8d612bcc565b611f16868d8c612bcc565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015611f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7e9190614c72565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe99190614c72565b9350611ff785858b8b612d2f565b8115612023576102f85461201e906001600160701b0380821691600160701b900416612d17565b6102fb555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050505060006102fc81905550915091565b60004382106120a15760405162461bcd60e51b815260040161077490614ce8565b61074d60ca83613042565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190614d29565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa15801561217f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190614eca565b606060378054610d2f90614cb4565b600033816121c082866125cc565b9050838110156122205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610774565b610ead8286868403612f1e565b600033610deb818585613237565b60608167ffffffffffffffff81111561225657612256614d59565b60405190808252806020026020018201604052801561228957816020015b60608152602001906001900390816122745790505b50905060005b82811015612329576122f9308585848181106122ad576122ad614f16565b90506020028101906122bf9190614f2c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138f492505050565b82828151811061230b5761230b614f16565b6020026020010181905250808061232190614f7a565b91505061228f565b5092915050565b6102fc54156123515760405162461bcd60e51b815260040161077490614bfc565b60016102fc556102f6546102f7546102f8546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916123f091849186916123eb916001600160701b039091169084906370a08231906024015b602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe9190614c72565b612bcc565b6102f8546040516370a0823160e01b815230600482015261243e91839186916123eb91600160701b9091046001600160701b0316906001600160a01b038516906370a08231906024016123aa565b505060006102fc5550565b834211156124995760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610774565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886124e78c6001600160a01b0316600090815261012e6020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000612542826139e8565b9050600061255282878787613a36565b9050896001600160a01b0316816001600160a01b0316146125b55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610774565b6125c08a8a8a612f1e565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61022a805460ff19166001179055600061260e3390565b905061261d61022954826120ac565b8061264d575061264d7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9826120ac565b6126995760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a454400006044820152606401610774565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190614d29565b905061272a848285613a5e565b806001600160a01b0316846001600160a01b03166127453390565b6001600160a01b03167fa9aec5d8b86e2fa2fd6ac3af62f2622e3dfdab1967d4cbbb56a5df7d74cb887c8660405161277f91815260200190565b60405180910390a4505061022a805460ff191690555050565b60408051808201909152600080825260208201526001600160a01b038316600090815260c960205260409020805463ffffffff84169081106127dc576127dc614f16565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561287d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a19190614d29565b905060006128ad610e3f565b90506001600160a01b0386161580612931575060405163253bd7b760e01b81526001600160a01b0387811660048301526024820183905283169063253bd7b790604401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190614eca565b80156129ba57506001600160a01b03851615806129ba575060405163253bd7b760e01b81526001600160a01b0386811660048301526024820183905283169063253bd7b790604401602060405180830381865afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ba9190614eca565b9695505050505050565b6102fc54156129e55760405162461bcd60e51b815260040161077490614bfc565b60016102fc556102f6546040516370a0823160e01b8152306004820152612ae4916001600160a01b0316906370a0823190602401602060405180830381865afa158015612a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5a9190614c72565b6102f7546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614c72565b6102f8546001600160701b0380821691600160701b900416612d2f565b60006102fc55565b60006001600160e01b031982166336372b0760e01b1480612b1d57506001600160e01b03198216634ec7fbed60e11b145b80612b3857506001600160e01b031982166383abf71560e01b145b8061074d575061074d82613a69565b6102f5546040516379ebe94160e11b81523360048201526000916001600160a01b03169063f3d7d28290602401602060405180830381865afa158015612b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb59190614eca565b15612bc7575060131936013560601c90565b503390565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b17905291516000928392871691612c589190614f93565b6000604051808303816000865af19150503d8060008114612c95576040519150601f19603f3d011682016040523d82523d6000602084013e612c9a565b606091505b5091509150818015612cc4575080511580612cc4575080806020019051810190612cc49190614eca565b612d105760405162461bcd60e51b815260206004820152601960248201527f536f6d61537761703a205452414e534645525f4641494c4544000000000000006044820152606401610774565b5050505050565b6000610e388284614faf565b6000610e388284614ca1565b6001600160701b038411801590612d4d57506001600160701b038311155b612d8e5760405162461bcd60e51b8152602060048201526012602482015271536f6d61537761703a204f564552464c4f5760701b6044820152606401610774565b6000612d9f64010000000042614fc6565b6102f854909150600090612dc090600160e01b900463ffffffff1683614fda565b905060008163ffffffff16118015612de057506001600160701b03841615155b8015612df457506001600160701b03831615155b15612e85578063ffffffff16612e1c85612e0d86613a8e565b6001600160e01b031690613aa7565b6001600160e01b0316612e2f9190614faf565b6102f96000828254612e419190614d46565b909155505063ffffffff8116612e5a84612e0d87613a8e565b6001600160e01b0316612e6d9190614faf565b6102fa6000828254612e7f9190614d46565b90915550505b6102f8805463ffffffff8416600160e01b026001600160e01b036001600160701b03898116600160701b9081026001600160e01b03199095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b6001600160a01b038316612f805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610774565b6001600160a01b038216612fe15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610774565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8154600090815b818110156130a657600061305d8284613abc565b90508486828154811061307257613072614f16565b60009182526020909120015463ffffffff161115613092578092506130a0565b61309d816001614d46565b91505b50613049565b81156130ea57846130b8600184614ca1565b815481106130c8576130c8614f16565b60009182526020909120015464010000000090046001600160e01b03166130ed565b60005b6001600160e01b031695945050505050565b604051631e26571f60e01b6020820152600090819081906001600160a01b0385169060240160408051601f198184030181529082905261313e91614f93565b600060405180830381855afa9150503d8060008114613179576040519150601f19603f3d011682016040523d82523d6000602084013e61317e565b606091505b509150915081801561319a57506000846001600160a01b03163b115b6131ac5767ffffffffffffffff6131b5565b6131b581614ff7565b949350505050565b60006131c984846125cc565b9050600019811461323157818110156132245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610774565b6132318484848403612f1e565b50505050565b6001600160a01b03831661329b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610774565b6001600160a01b0382166132fd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610774565b613308838383613ad7565b6001600160a01b038316600090815260336020526040902054818110156133805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610774565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906133b7908490614d46565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161340391815260200190565b60405180910390a3613231848484613ae2565b61025e54604080519182526020820183905233917f53f0b6b34c97fd1733ccb4b21aea7549d7ad3a83e6316864417b8cc1a9a9a807910160405180910390a261025e55565b60006110777f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61348a60fa5490565b60fb546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6134de613aed565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff1661354f5760405162461bcd60e51b81526004016107749061501b565b613557613b3a565b61355f613b3a565b613567613b61565b61356f613b3a565b61359283604051806040016040528060018152602001603160f81b815250613b94565b61359b83613bd5565b6135a3613b3a565b6135ab613bfc565b6135b3613b3a565b6135bb613b3a565b6135c3613b3a565b6135cb613c85565b6135d3613b3a565b6117438282613d17565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561363d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136619190614eca565b8061107757505060655460ff1690565b6000806102f560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ec9190614d29565b6102fb546001600160a01b03821615801594509192509061379b5780156137965760006137286119e06001600160701b03888116908816612d17565b90506000613735836137b0565b90508082111561379357600061375661374e8484612d23565b603554610c53565b9050600061376f83613769866005612d17565b90613d57565b9050600061377d8284614f02565b9050801561378f5761378f8782613820565b5050505b50505b6137a8565b80156137a85760006102fb555b505092915050565b6000600382111561381157508060006137ca600283614f02565b6137d5906001614d46565b90505b8181101561380b579050806002816137f08186614f02565b6137fa9190614d46565b6138049190614f02565b90506137d8565b50919050565b811561381b575060015b919050565b61382a8282613d63565b5050565b600081831061383d5781610e38565b5090919050565b600063ffffffff8211156138a95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610774565b5090565b6138b5613def565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861350b3390565b61382a8282613e37565b60606001600160a01b0383163b61395c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610774565b600080846001600160a01b0316846040516139779190614f93565b600060405180830381855af49150503d80600081146139b2576040519150601f19603f3d011682016040523d82523d6000602084013e6139b7565b606091505b50915091506139df82826040518060600160405280602781526020016151e360279139613e4f565b95945050505050565b600061074d6139f561345b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000613a4787878787613e88565b91509150613a5481613f75565b5095945050505050565b611743838383613237565b60006001600160e01b03198216633cdf447360e21b148061074d575061074d8261412b565b600061074d600160701b6001600160701b038416615066565b6000610e386001600160701b03831684615098565b6000613acb6002848418614f02565b610e3890848416614d46565b611743838383614150565b6117438383836141c4565b613af5611850565b613b385760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610774565b565b600054610100900460ff16613b385760405162461bcd60e51b81526004016107749061501b565b600054610100900460ff16613b885760405162461bcd60e51b81526004016107749061501b565b6065805460ff19169055565b600054610100900460ff16613bbb5760405162461bcd60e51b81526004016107749061501b565b81516020928301208151919092012060fa9190915560fb55565b600054610100900460ff1661122a5760405162461bcd60e51b81526004016107749061501b565b600054610100900460ff16613c235760405162461bcd60e51b81526004016107749061501b565b6040516bffffffffffffffffffffffff193060601b1660208201527fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9603482015260540160408051601f19818403018152919052805160209091012061022955565b600054610100900460ff16613cac5760405162461bcd60e51b81526004016107749061501b565b6040516bffffffffffffffffffffffff193060601b1660208201527ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1603482015260540160408051601f19818403018152919052805160209091012061025d55613b38600019613416565b600054610100900460ff16613d3e5760405162461bcd60e51b81526004016107749061501b565b6036613d4a838261510c565b506037611743828261510c565b6000610e388284614d46565b613d6d82826141cf565b6035546001600160e01b031015613de15760405162461bcd60e51b815260206004820152603260248201527f4552433230486973746f72793a20746f74616c20737570706c79207269736b73604482015271206f766572666c6f77696e6720766f74657360701b6064820152608401610774565b61323160ca613d57836142c2565b613df7611850565b15613b385760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610774565b613e41828261443b565b61323160ca612d23836142c2565b60608315613e5e575081610e38565b825115613e6e5782518084602001fd5b8160405162461bcd60e51b81526004016107749190614963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613ebf5750600090506003613f6c565b8460ff16601b14158015613ed757508460ff16601c14155b15613ee85750600090506004613f6c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613f3c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613f6557600060019250925050613f6c565b9150600090505b94509492505050565b6000816004811115613f8957613f896151cc565b03613f915750565b6001816004811115613fa557613fa56151cc565b03613ff25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610774565b6002816004811115614006576140066151cc565b036140535760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610774565b6003816004811115614067576140676151cc565b036140bf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610774565b60048160048111156140d3576140d36151cc565b0361122a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610774565b60006001600160e01b03198216630e46e23b60e31b148061074d575061074d8261459c565b61415b8383836145c1565b614163614629565b1561416d57505050565b61417883838361281c565b6117435760405162461bcd60e51b815260206004820152601e60248201527f455243323047756172643a204d495353494e475f50524956494c4547455300006044820152606401610774565b611743838383614643565b6001600160a01b0382166142255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610774565b61423160008383613ad7565b80603560008282546142439190614d46565b90915550506001600160a01b03821660009081526033602052604081208054839290614270908490614d46565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361382a60008383613ae2565b82546000908190801561430d57856142db600183614ca1565b815481106142eb576142eb614f16565b60009182526020909120015464010000000090046001600160e01b0316614310565b60005b6001600160e01b0316925061432983858763ffffffff16565b915060008111801561436757504386614343600184614ca1565b8154811061435357614353614f16565b60009182526020909120015463ffffffff16145b156143c75761437582614780565b86614381600184614ca1565b8154811061439157614391614f16565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550614432565b8560405180604001604052806143dc43613844565b63ffffffff1681526020016143f085614780565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6001600160a01b03821661449b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610774565b6144a782600083613ad7565b6001600160a01b0382166000908152603360205260409020548181101561451b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610774565b6001600160a01b038316600090815260336020526040812083830390556035805484929061454a908490614ca1565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361174383600084613ae2565b60006001600160e01b031982166303ae494f60e61b148061074d575061074d826147e9565b6145c9611850565b156117435760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610774565b61022a5460009060ff1661463d5750600090565b50600190565b816001600160a01b0316836001600160a01b0316141580156146655750600081115b15611743576001600160a01b038316156146f3576001600160a01b038316600090815260c96020526040812081906146a090612d23856142c2565b91509150846001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c383836040516146e8929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611743576001600160a01b038216600090815260c960205260408120819061472990613d57856142c2565b91509150836001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c38383604051614771929190918252602082015260400190565b60405180910390a25050505050565b60006001600160e01b038211156138a95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610774565b60006001600160e01b0319821663b55bd4f760e01b148061074d575061074d8260006001600160e01b0319821663d86f1ca160e01b148061074d57506301ffc9a760e01b6001600160e01b031983161461074d565b60006020828403121561485057600080fd5b81356001600160e01b031981168114610e3857600080fd5b6001600160a01b038116811461122a57600080fd5b60008060008060006080868803121561489557600080fd5b853594506020860135935060408601356148ae81614868565b9250606086013567ffffffffffffffff808211156148cb57600080fd5b818801915088601f8301126148df57600080fd5b8135818111156148ee57600080fd5b89602082850101111561490057600080fd5b9699959850939650602001949392505050565b60005b8381101561492e578181015183820152602001614916565b50506000910152565b6000815180845261494f816020860160208601614913565b601f01601f19169290920160200192915050565b602081526000610e386020830184614937565b6000806040838503121561498957600080fd5b823561499481614868565b946020939093013593505050565b6000806000606084860312156149b757600080fd5b83356149c281614868565b925060208401356149d281614868565b929592945050506040919091013590565b6000602082840312156149f557600080fd5b5035919050565b60008060408385031215614a0f57600080fd5b8235614a1a81614868565b91506020830135614a2a81614868565b809150509250929050565b600060208284031215614a4757600080fd5b8135610e3881614868565b60008060408385031215614a6557600080fd5b823591506020830135614a2a81614868565b60008060208385031215614a8a57600080fd5b823567ffffffffffffffff80821115614aa257600080fd5b818501915085601f830112614ab657600080fd5b813581811115614ac557600080fd5b8660208260051b8501011115614ada57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614b4157603f19888603018452614b2f858351614937565b94509285019290850190600101614b13565b5092979650505050505050565b600080600080600080600060e0888a031215614b6957600080fd5b8735614b7481614868565b96506020880135614b8481614868565b95506040880135945060608801359350608088013560ff81168114614ba857600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614bd857600080fd5b8235614be381614868565b9150602083013563ffffffff81168114614a2a57600080fd5b60208082526010908201526f14dbdb5854ddd85c0e881313d0d2d15160821b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600060208284031215614c8457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074d5761074d614c8b565b600181811c90821680614cc857607f821691505b60208210810361380b57634e487b7160e01b600052602260045260246000fd5b60208082526021908201527f4552433230486973746f72793a20626c6f636b206e6f7420796574206d696e656040820152601960fa1b606082015260800190565b600060208284031215614d3b57600080fd5b8151610e3881614868565b8082018082111561074d5761074d614c8b565b634e487b7160e01b600052604160045260246000fd5b600060208284031215614d8157600080fd5b815167ffffffffffffffff80821115614d9957600080fd5b818401915084601f830112614dad57600080fd5b815181811115614dbf57614dbf614d59565b604051601f8201601f19908116603f01168101908382118183101715614de757614de7614d59565b81604052828152876020848701011115614e0057600080fd5b614e11836020830160208801614913565b979650505050505050565b60008651614e2e818460208b01614913565b865190830190614e42818360208b01614913565b8651910190614e55818360208a01614913565b8551910190614e68818360208901614913565b8451910190614e7b818360208801614913565b01979650505050505050565b60008451614e99818460208901614913565b845190830190614ead818360208901614913565b8451910190614ec0818360208801614913565b0195945050505050565b600060208284031215614edc57600080fd5b81518015158114610e3857600080fd5b634e487b7160e01b600052601260045260246000fd5b600082614f1157614f11614eec565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112614f4357600080fd5b83018035915067ffffffffffffffff821115614f5e57600080fd5b602001915036819003821315614f7357600080fd5b9250929050565b600060018201614f8c57614f8c614c8b565b5060010190565b60008251614fa5818460208701614913565b9190910192915050565b808202811582820484141761074d5761074d614c8b565b600082614fd557614fd5614eec565b500690565b63ffffffff82811682821603908082111561232957612329614c8b565b8051602080830151919081101561380b5760001960209190910360031b1b16919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160e01b0382811682821681810283169291811582850482141761508f5761508f614c8b565b50505092915050565b60006001600160e01b03838116806150b2576150b2614eec565b92169190910492915050565b601f82111561174357600081815260208120601f850160051c810160208610156150e55750805b601f850160051c820191505b81811015615104578281556001016150f1565b505050505050565b815167ffffffffffffffff81111561512657615126614d59565b61513a816151348454614cb4565b846150be565b602080601f83116001811461516f57600084156151575750858301515b600019600386901b1c1916600185901b178555615104565b600085815260208120601f198616915b8281101561519e5788860151825594840194600190910190840161517f565b50858210156151bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102d65760003560e01c80636a62784211610182578063ac9650d8116100e9578063d505accf116100a2578063eec47d601161007c578063eec47d60146106c6578063f1127ed8146106d0578063f37d11cc1461070d578063fff6cae91461072057600080fd5b8063d505accf1461068d578063dd62ed3e146106a0578063eb9253c0146106b357600080fd5b8063ac9650d81461061f578063ba9a7a561461063f578063bc25cf7714610648578063c45a01551461065b578063c72460ee1461066f578063d21220a71461067957600080fd5b806389afcb441161013b57806389afcb44146105a35780638e539e8c146105cb57806391d14854146105de57806395d89b41146105f1578063a457c2d7146105f9578063a9059cbb1461060c57600080fd5b80636a6278421461051a5780636fcfff451461052d57806370a08231146105555780637464fc3d1461057e5780637ecebe00146105885780638456cb591461059b57600080fd5b80632772ce9d116102415780633f4ba83a116101fa5780635909c0d5116101d45780635909c0d5146104d75780635a3d5493146104e15780635c975abb146104eb57806363727fc2146104f357600080fd5b80633f4ba83a146104a9578063485cc955146104b15780634b63885a146104c457600080fd5b80632772ce9d1461041e5780632a7a0c68146104315780633013928014610458578063313ce5671461047f5780633644e5151461048e578063395093511461049657600080fd5b80630dfe1681116102935780630dfe16811461039557806318160ddd146103c15780631e26571f146103c9578063227102a6146103d157806323b872dd146103f8578063248a9ca31461040b57600080fd5b806301ffc9a7146102db578063022c0d9f1461030357806306fdde03146103185780630902f1ac1461032d578063095ea7b3146103615780630df8699914610374575b600080fd5b6102ee6102e936600461483e565b610728565b60405190151581526020015b60405180910390f35b61031661031136600461487d565b610753565b005b610320610d20565b6040516102fa9190614963565b610335610db2565b604080516001600160701b03948516815293909216602084015263ffffffff16908201526060016102fa565b6102ee61036f366004614976565b610ddd565b610387610382366004614976565b610df5565b6040519081526020016102fa565b6102f6546103a9906001600160a01b031681565b6040516001600160a01b0390911681526020016102fa565b603554610387565b610387610e3f565b6103877ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b6102ee6104063660046149a2565b610e94565b6103876104193660046149e3565b610eb8565b6102ee61042c3660046149e3565b610faa565b6103877f000000000000000000000000000000000000000000000000000000000000000081565b6103877fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b604051601281526020016102fa565b61038761106d565b6102ee6104a4366004614976565b61107c565b61031661109e565b6103166104bf3660046149fc565b61122d565b6102ee6104d2366004614a35565b611748565b6103876102f95481565b6103876102fa5481565b6102ee611850565b6103a97f000000000000000000000000000000000000000000000000000000000000000081565b610387610528366004614a35565b61185a565b61054061053b366004614a35565b611b3e565b60405163ffffffff90911681526020016102fa565b610387610563366004614a35565b6001600160a01b031660009081526033602052604090205490565b6103876102fb5481565b610387610596366004614a35565b611b60565b610316611b7f565b6105b66105b1366004614a35565b611d0b565b604080519283526020830191909152016102fa565b6103876105d93660046149e3565b612080565b6102ee6105ec366004614a52565b6120ac565b6103206121a3565b6102ee610607366004614976565b6121b2565b6102ee61061a366004614976565b61222d565b61063261062d366004614a77565b61223b565b6040516102fa9190614aec565b6103876103e881565b610316610656366004614a35565b612330565b6102f5546103a9906001600160a01b031681565b6103876102295481565b6102f7546103a9906001600160a01b031681565b61031661069b366004614b4e565b612449565b6103876106ae3660046149fc565b6125cc565b6103166106c1366004614976565b6125f7565b61038761025d5481565b6106e36106de366004614bc5565b612798565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016102fa565b6102ee61071b3660046149a2565b61281c565b6103166129c4565b60006001600160e01b031982166301a8853560e51b148061074d575061074d82612aec565b92915050565b6102fc541561077d5760405162461bcd60e51b815260040161077490614bfc565b60405180910390fd5b60016102fc5561078b612b47565b61079481611748565b6107e05760405162461bcd60e51b815260206004820152601b60248201527f72657175697265642070726976696c65676573206e6f74206d657400000000006044820152606401610774565b60008611806107ef5750600085115b6108475760405162461bcd60e51b8152602060048201526024808201527f536f6d61537761703a20494e53554646494349454e545f4f55545055545f414d60448201526313d5539560e21b6064820152608401610774565b600080610852610db2565b5091509150816001600160701b0316881080156108775750806001600160701b031687105b6108c35760405162461bcd60e51b815260206004820181905260248201527f536f6d61537761703a20494e53554646494349454e545f4c49515549444954596044820152606401610774565b6108ee6040518060800160405280600081526020016000815260200160008152602001600081525090565b6102f6546102f7546001600160a01b039182169190811690891682148015906109295750806001600160a01b0316896001600160a01b031614155b61096c5760405162461bcd60e51b8152602060048201526014602482015273536f6d61537761703a20494e56414c49445f544f60601b6044820152606401610774565b8a1561097d5761097d828a8d612bcc565b891561098e5761098e818a8c612bcc565b86156109fb57604051632fd4324960e01b81526001600160a01b038a1690632fd43249906109c89033908f908f908e908e90600401614c26565b600060405180830381600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190614c72565b83526040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614c72565b602084015250610ae89050896001600160701b038516614ca1565b815111610af6576000610b15565b610b09896001600160701b038516614ca1565b8151610b159190614ca1565b6040820152610b2d886001600160701b038416614ca1565b816020015111610b3e576000610b60565b610b51886001600160701b038416614ca1565b8160200151610b609190614ca1565b60608201526040810151151580610b7b575060008160600151115b610bd35760405162461bcd60e51b815260206004820152602360248201527f536f6d61537761703a20494e53554646494349454e545f494e5055545f414d4f60448201526215539560ea1b6064820152608401610774565b6000610c04610bf060038460400151612d1790919063ffffffff16565b8351610bfe906103e8612d17565b90612d23565b90506000610c34610c2360038560600151612d1790919063ffffffff16565b6020850151610bfe906103e8612d17565b9050610c59620f4240610c536001600160701b03888116908816612d17565b90612d17565b610c638383612d17565b1015610c9f5760405162461bcd60e51b815260206004820152600b60248201526a536f6d61537761703a204b60a81b6044820152606401610774565b5050610cb5816000015182602001518585612d2f565b604081810151606080840151835192835260208301528183018c905281018a905290516001600160a01b0389169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a3505060006102fc5550505050505050565b606060368054610d2f90614cb4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5b90614cb4565b8015610da85780601f10610d7d57610100808354040283529160200191610da8565b820191906000526020600020905b815481529060010190602001808311610d8b57829003601f168201915b5050505050905090565b6102f8546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600033610deb818585612f1e565b5060019392505050565b6000438210610e165760405162461bcd60e51b815260040161077490614ce8565b6001600160a01b038316600090815260c960205260409020610e389083613042565b9392505050565b6102f6546000908190610e5a906001600160a01b03166130ff565b6102f754909150600090610e76906001600160a01b03166130ff565b9050610e8d8282610e8761025e5490565b91171790565b9250505090565b600033610ea28582856131bd565b610ead858585613237565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c9190614d29565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b8152600401610f6991815260200190565b602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614c72565b6000610fba61025d546105ec3390565b80610fea5750610fea7ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1336120ac565b61105c5760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f207468697300000000000000006064820152608401610774565b61106582613416565b506001919050565b600061107761345b565b905090565b600033610deb81858561108f83836125cc565b6110999190614d46565b612f1e565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561110b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112f9190614d29565b6001600160a01b031614806111d65750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190614d29565b6001600160a01b0316145b6112225760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610774565b61122a6134d6565b50565b600054610100900460ff161580801561124d5750600054600160ff909116105b806112675750303b158015611267575060005460ff166001145b6112ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610774565b6000805460ff1916600117905580156112ed576000805461ff0019166101001790555b6102f58054336001600160a01b0319918216179091556102f6805482166001600160a01b038681169182179092556102f780549093169185169190911790915560408051808201825260088152670534f4d41537761760c41b602082015281516306fdde0360e01b8152915190926060926000926306fdde039160048082019286929091908290030181865afa15801561138b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b39190810190614d6f565b905060006102f760009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114339190810190614d6f565b905083600083511180611447575060008251115b611460576040518060200160405280600081525061147c565b6040518060400160405280600281526020016101d160f51b8152505b600084511161149a576040518060200160405280600081525061149c565b835b600085511180156114ae575060008451115b6114c757604051806020016040528060008152506114e4565b6040518060400160405280600381526020016201016960ed1b8152505b60008551116115025760405180602001604052806000815250611504565b845b604051602001611518959493929190614e1c565b6040516020818303038152906040529350505060006102f660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611581573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115a99190810190614d6f565b905060006102f760009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611601573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116299190810190614d6f565b90506000825111611649576040518060200160405280600081525061164b565b815b6000835111801561165d575060008251115b6116765760405180602001604052806000815250611691565b604051806040016040528060018152602001602d60f81b8152505b60008351116116af57604051806020016040528060008152506116b1565b825b6040516020016116c393929190614e87565b60408051601f1981840301815282820190915260088252670534f4d41737761760c41b602083015293506116fb925090508383613528565b50508015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc9190614d29565b6001600160a01b031663253bd7b7836117e3610e3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074d9190614eca565b60006110776135dd565b60006102fc5460001461187f5760405162461bcd60e51b815260040161077490614bfc565b60016102fc55600080611890610db2565b506102f6546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119079190614c72565b6102f7546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197a9190614c72565b90506000611991836001600160701b038716612d23565b905060006119a8836001600160701b038716612d23565b905060006119b68787613671565b905060006119c360355490565b905080600003611a06576119e56103e8610bfe6119e08787612d17565b6137b0565b6102f554909950611a01906001600160a01b03166103e8613820565b611a4d565b611a4a6001600160701b038916611a1d8684612d17565b611a279190614f02565b6001600160701b038916611a3b8685612d17565b611a459190614f02565b61382e565b98505b60008911611aad5760405162461bcd60e51b815260206004820152602760248201527f536f6d61537761703a20494e53554646494349454e545f4c495155494449545960448201526617d3525395115160ca1b6064820152608401610774565b611ab78a8a613820565b611ac386868a8a612d2f565b8115611aef576102f854611aea906001600160701b0380821691600160701b900416612d17565b6102fb555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060006102fc5550949695505050505050565b6001600160a01b038116600090815260c9602052604081205461074d90613844565b6001600160a01b038116600090815261012e602052604081205461074d565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c109190614d29565b6001600160a01b03161480611cb75750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac9190614d29565b6001600160a01b0316145b611d035760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610774565b61122a6138ad565b6000806102fc54600014611d315760405162461bcd60e51b815260040161077490614bfc565b60016102fc55600080611d42610db2565b506102f6546102f7546040516370a0823160e01b81523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190614c72565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190614c72565b30600090815260336020526040812054919250611e4d8888613671565b90506000611e5a60355490565b905080611e678487612d17565b611e719190614f02565b9a5080611e7e8486612d17565b611e889190614f02565b995060008b118015611e9a575060008a115b611ef65760405162461bcd60e51b815260206004820152602760248201527f536f6d61537761703a20494e53554646494349454e545f4c495155494449545960448201526617d0955493915160ca1b6064820152608401610774565b611f0030846138ea565b611f0b878d8d612bcc565b611f16868d8c612bcc565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015611f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7e9190614c72565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe99190614c72565b9350611ff785858b8b612d2f565b8115612023576102f85461201e906001600160701b0380821691600160701b900416612d17565b6102fb555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050505060006102fc81905550915091565b60004382106120a15760405162461bcd60e51b815260040161077490614ce8565b61074d60ca83613042565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121309190614d29565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa15801561217f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190614eca565b606060378054610d2f90614cb4565b600033816121c082866125cc565b9050838110156122205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610774565b610ead8286868403612f1e565b600033610deb818585613237565b60608167ffffffffffffffff81111561225657612256614d59565b60405190808252806020026020018201604052801561228957816020015b60608152602001906001900390816122745790505b50905060005b82811015612329576122f9308585848181106122ad576122ad614f16565b90506020028101906122bf9190614f2c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138f492505050565b82828151811061230b5761230b614f16565b6020026020010181905250808061232190614f7a565b91505061228f565b5092915050565b6102fc54156123515760405162461bcd60e51b815260040161077490614bfc565b60016102fc556102f6546102f7546102f8546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916123f091849186916123eb916001600160701b039091169084906370a08231906024015b602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe9190614c72565b612bcc565b6102f8546040516370a0823160e01b815230600482015261243e91839186916123eb91600160701b9091046001600160701b0316906001600160a01b038516906370a08231906024016123aa565b505060006102fc5550565b834211156124995760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610774565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886124e78c6001600160a01b0316600090815261012e6020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000612542826139e8565b9050600061255282878787613a36565b9050896001600160a01b0316816001600160a01b0316146125b55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610774565b6125c08a8a8a612f1e565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61022a805460ff19166001179055600061260e3390565b905061261d61022954826120ac565b8061264d575061264d7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9826120ac565b6126995760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a454400006044820152606401610774565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271d9190614d29565b905061272a848285613a5e565b806001600160a01b0316846001600160a01b03166127453390565b6001600160a01b03167fa9aec5d8b86e2fa2fd6ac3af62f2622e3dfdab1967d4cbbb56a5df7d74cb887c8660405161277f91815260200190565b60405180910390a4505061022a805460ff191690555050565b60408051808201909152600080825260208201526001600160a01b038316600090815260c960205260409020805463ffffffff84169081106127dc576127dc614f16565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561287d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a19190614d29565b905060006128ad610e3f565b90506001600160a01b0386161580612931575060405163253bd7b760e01b81526001600160a01b0387811660048301526024820183905283169063253bd7b790604401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190614eca565b80156129ba57506001600160a01b03851615806129ba575060405163253bd7b760e01b81526001600160a01b0386811660048301526024820183905283169063253bd7b790604401602060405180830381865afa158015612996573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ba9190614eca565b9695505050505050565b6102fc54156129e55760405162461bcd60e51b815260040161077490614bfc565b60016102fc556102f6546040516370a0823160e01b8152306004820152612ae4916001600160a01b0316906370a0823190602401602060405180830381865afa158015612a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5a9190614c72565b6102f7546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614c72565b6102f8546001600160701b0380821691600160701b900416612d2f565b60006102fc55565b60006001600160e01b031982166336372b0760e01b1480612b1d57506001600160e01b03198216634ec7fbed60e11b145b80612b3857506001600160e01b031982166383abf71560e01b145b8061074d575061074d82613a69565b6102f5546040516379ebe94160e11b81523360048201526000916001600160a01b03169063f3d7d28290602401602060405180830381865afa158015612b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb59190614eca565b15612bc7575060131936013560601c90565b503390565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b17905291516000928392871691612c589190614f93565b6000604051808303816000865af19150503d8060008114612c95576040519150601f19603f3d011682016040523d82523d6000602084013e612c9a565b606091505b5091509150818015612cc4575080511580612cc4575080806020019051810190612cc49190614eca565b612d105760405162461bcd60e51b815260206004820152601960248201527f536f6d61537761703a205452414e534645525f4641494c4544000000000000006044820152606401610774565b5050505050565b6000610e388284614faf565b6000610e388284614ca1565b6001600160701b038411801590612d4d57506001600160701b038311155b612d8e5760405162461bcd60e51b8152602060048201526012602482015271536f6d61537761703a204f564552464c4f5760701b6044820152606401610774565b6000612d9f64010000000042614fc6565b6102f854909150600090612dc090600160e01b900463ffffffff1683614fda565b905060008163ffffffff16118015612de057506001600160701b03841615155b8015612df457506001600160701b03831615155b15612e85578063ffffffff16612e1c85612e0d86613a8e565b6001600160e01b031690613aa7565b6001600160e01b0316612e2f9190614faf565b6102f96000828254612e419190614d46565b909155505063ffffffff8116612e5a84612e0d87613a8e565b6001600160e01b0316612e6d9190614faf565b6102fa6000828254612e7f9190614d46565b90915550505b6102f8805463ffffffff8416600160e01b026001600160e01b036001600160701b03898116600160701b9081026001600160e01b03199095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b6001600160a01b038316612f805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610774565b6001600160a01b038216612fe15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610774565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8154600090815b818110156130a657600061305d8284613abc565b90508486828154811061307257613072614f16565b60009182526020909120015463ffffffff161115613092578092506130a0565b61309d816001614d46565b91505b50613049565b81156130ea57846130b8600184614ca1565b815481106130c8576130c8614f16565b60009182526020909120015464010000000090046001600160e01b03166130ed565b60005b6001600160e01b031695945050505050565b604051631e26571f60e01b6020820152600090819081906001600160a01b0385169060240160408051601f198184030181529082905261313e91614f93565b600060405180830381855afa9150503d8060008114613179576040519150601f19603f3d011682016040523d82523d6000602084013e61317e565b606091505b509150915081801561319a57506000846001600160a01b03163b115b6131ac5767ffffffffffffffff6131b5565b6131b581614ff7565b949350505050565b60006131c984846125cc565b9050600019811461323157818110156132245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610774565b6132318484848403612f1e565b50505050565b6001600160a01b03831661329b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610774565b6001600160a01b0382166132fd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610774565b613308838383613ad7565b6001600160a01b038316600090815260336020526040902054818110156133805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610774565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906133b7908490614d46565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161340391815260200190565b60405180910390a3613231848484613ae2565b61025e54604080519182526020820183905233917f53f0b6b34c97fd1733ccb4b21aea7549d7ad3a83e6316864417b8cc1a9a9a807910160405180910390a261025e55565b60006110777f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61348a60fa5490565b60fb546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6134de613aed565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff1661354f5760405162461bcd60e51b81526004016107749061501b565b613557613b3a565b61355f613b3a565b613567613b61565b61356f613b3a565b61359283604051806040016040528060018152602001603160f81b815250613b94565b61359b83613bd5565b6135a3613b3a565b6135ab613bfc565b6135b3613b3a565b6135bb613b3a565b6135c3613b3a565b6135cb613c85565b6135d3613b3a565b6117438282613d17565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561363d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136619190614eca565b8061107757505060655460ff1690565b6000806102f560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ec9190614d29565b6102fb546001600160a01b03821615801594509192509061379b5780156137965760006137286119e06001600160701b03888116908816612d17565b90506000613735836137b0565b90508082111561379357600061375661374e8484612d23565b603554610c53565b9050600061376f83613769866005612d17565b90613d57565b9050600061377d8284614f02565b9050801561378f5761378f8782613820565b5050505b50505b6137a8565b80156137a85760006102fb555b505092915050565b6000600382111561381157508060006137ca600283614f02565b6137d5906001614d46565b90505b8181101561380b579050806002816137f08186614f02565b6137fa9190614d46565b6138049190614f02565b90506137d8565b50919050565b811561381b575060015b919050565b61382a8282613d63565b5050565b600081831061383d5781610e38565b5090919050565b600063ffffffff8211156138a95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610774565b5090565b6138b5613def565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861350b3390565b61382a8282613e37565b60606001600160a01b0383163b61395c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610774565b600080846001600160a01b0316846040516139779190614f93565b600060405180830381855af49150503d80600081146139b2576040519150601f19603f3d011682016040523d82523d6000602084013e6139b7565b606091505b50915091506139df82826040518060600160405280602781526020016151e360279139613e4f565b95945050505050565b600061074d6139f561345b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000613a4787878787613e88565b91509150613a5481613f75565b5095945050505050565b611743838383613237565b60006001600160e01b03198216633cdf447360e21b148061074d575061074d8261412b565b600061074d600160701b6001600160701b038416615066565b6000610e386001600160701b03831684615098565b6000613acb6002848418614f02565b610e3890848416614d46565b611743838383614150565b6117438383836141c4565b613af5611850565b613b385760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610774565b565b600054610100900460ff16613b385760405162461bcd60e51b81526004016107749061501b565b600054610100900460ff16613b885760405162461bcd60e51b81526004016107749061501b565b6065805460ff19169055565b600054610100900460ff16613bbb5760405162461bcd60e51b81526004016107749061501b565b81516020928301208151919092012060fa9190915560fb55565b600054610100900460ff1661122a5760405162461bcd60e51b81526004016107749061501b565b600054610100900460ff16613c235760405162461bcd60e51b81526004016107749061501b565b6040516bffffffffffffffffffffffff193060601b1660208201527fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9603482015260540160408051601f19818403018152919052805160209091012061022955565b600054610100900460ff16613cac5760405162461bcd60e51b81526004016107749061501b565b6040516bffffffffffffffffffffffff193060601b1660208201527ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1603482015260540160408051601f19818403018152919052805160209091012061025d55613b38600019613416565b600054610100900460ff16613d3e5760405162461bcd60e51b81526004016107749061501b565b6036613d4a838261510c565b506037611743828261510c565b6000610e388284614d46565b613d6d82826141cf565b6035546001600160e01b031015613de15760405162461bcd60e51b815260206004820152603260248201527f4552433230486973746f72793a20746f74616c20737570706c79207269736b73604482015271206f766572666c6f77696e6720766f74657360701b6064820152608401610774565b61323160ca613d57836142c2565b613df7611850565b15613b385760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610774565b613e41828261443b565b61323160ca612d23836142c2565b60608315613e5e575081610e38565b825115613e6e5782518084602001fd5b8160405162461bcd60e51b81526004016107749190614963565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613ebf5750600090506003613f6c565b8460ff16601b14158015613ed757508460ff16601c14155b15613ee85750600090506004613f6c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613f3c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613f6557600060019250925050613f6c565b9150600090505b94509492505050565b6000816004811115613f8957613f896151cc565b03613f915750565b6001816004811115613fa557613fa56151cc565b03613ff25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610774565b6002816004811115614006576140066151cc565b036140535760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610774565b6003816004811115614067576140676151cc565b036140bf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610774565b60048160048111156140d3576140d36151cc565b0361122a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610774565b60006001600160e01b03198216630e46e23b60e31b148061074d575061074d8261459c565b61415b8383836145c1565b614163614629565b1561416d57505050565b61417883838361281c565b6117435760405162461bcd60e51b815260206004820152601e60248201527f455243323047756172643a204d495353494e475f50524956494c4547455300006044820152606401610774565b611743838383614643565b6001600160a01b0382166142255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610774565b61423160008383613ad7565b80603560008282546142439190614d46565b90915550506001600160a01b03821660009081526033602052604081208054839290614270908490614d46565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361382a60008383613ae2565b82546000908190801561430d57856142db600183614ca1565b815481106142eb576142eb614f16565b60009182526020909120015464010000000090046001600160e01b0316614310565b60005b6001600160e01b0316925061432983858763ffffffff16565b915060008111801561436757504386614343600184614ca1565b8154811061435357614353614f16565b60009182526020909120015463ffffffff16145b156143c75761437582614780565b86614381600184614ca1565b8154811061439157614391614f16565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550614432565b8560405180604001604052806143dc43613844565b63ffffffff1681526020016143f085614780565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6001600160a01b03821661449b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610774565b6144a782600083613ad7565b6001600160a01b0382166000908152603360205260409020548181101561451b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610774565b6001600160a01b038316600090815260336020526040812083830390556035805484929061454a908490614ca1565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361174383600084613ae2565b60006001600160e01b031982166303ae494f60e61b148061074d575061074d826147e9565b6145c9611850565b156117435760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610774565b61022a5460009060ff1661463d5750600090565b50600190565b816001600160a01b0316836001600160a01b0316141580156146655750600081115b15611743576001600160a01b038316156146f3576001600160a01b038316600090815260c96020526040812081906146a090612d23856142c2565b91509150846001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c383836040516146e8929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611743576001600160a01b038216600090815260c960205260408120819061472990613d57856142c2565b91509150836001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c38383604051614771929190918252602082015260400190565b60405180910390a25050505050565b60006001600160e01b038211156138a95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610774565b60006001600160e01b0319821663b55bd4f760e01b148061074d575061074d8260006001600160e01b0319821663d86f1ca160e01b148061074d57506301ffc9a760e01b6001600160e01b031983161461074d565b60006020828403121561485057600080fd5b81356001600160e01b031981168114610e3857600080fd5b6001600160a01b038116811461122a57600080fd5b60008060008060006080868803121561489557600080fd5b853594506020860135935060408601356148ae81614868565b9250606086013567ffffffffffffffff808211156148cb57600080fd5b818801915088601f8301126148df57600080fd5b8135818111156148ee57600080fd5b89602082850101111561490057600080fd5b9699959850939650602001949392505050565b60005b8381101561492e578181015183820152602001614916565b50506000910152565b6000815180845261494f816020860160208601614913565b601f01601f19169290920160200192915050565b602081526000610e386020830184614937565b6000806040838503121561498957600080fd5b823561499481614868565b946020939093013593505050565b6000806000606084860312156149b757600080fd5b83356149c281614868565b925060208401356149d281614868565b929592945050506040919091013590565b6000602082840312156149f557600080fd5b5035919050565b60008060408385031215614a0f57600080fd5b8235614a1a81614868565b91506020830135614a2a81614868565b809150509250929050565b600060208284031215614a4757600080fd5b8135610e3881614868565b60008060408385031215614a6557600080fd5b823591506020830135614a2a81614868565b60008060208385031215614a8a57600080fd5b823567ffffffffffffffff80821115614aa257600080fd5b818501915085601f830112614ab657600080fd5b813581811115614ac557600080fd5b8660208260051b8501011115614ada57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614b4157603f19888603018452614b2f858351614937565b94509285019290850190600101614b13565b5092979650505050505050565b600080600080600080600060e0888a031215614b6957600080fd5b8735614b7481614868565b96506020880135614b8481614868565b95506040880135945060608801359350608088013560ff81168114614ba857600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614bd857600080fd5b8235614be381614868565b9150602083013563ffffffff81168114614a2a57600080fd5b60208082526010908201526f14dbdb5854ddd85c0e881313d0d2d15160821b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600060208284031215614c8457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074d5761074d614c8b565b600181811c90821680614cc857607f821691505b60208210810361380b57634e487b7160e01b600052602260045260246000fd5b60208082526021908201527f4552433230486973746f72793a20626c6f636b206e6f7420796574206d696e656040820152601960fa1b606082015260800190565b600060208284031215614d3b57600080fd5b8151610e3881614868565b8082018082111561074d5761074d614c8b565b634e487b7160e01b600052604160045260246000fd5b600060208284031215614d8157600080fd5b815167ffffffffffffffff80821115614d9957600080fd5b818401915084601f830112614dad57600080fd5b815181811115614dbf57614dbf614d59565b604051601f8201601f19908116603f01168101908382118183101715614de757614de7614d59565b81604052828152876020848701011115614e0057600080fd5b614e11836020830160208801614913565b979650505050505050565b60008651614e2e818460208b01614913565b865190830190614e42818360208b01614913565b8651910190614e55818360208a01614913565b8551910190614e68818360208901614913565b8451910190614e7b818360208801614913565b01979650505050505050565b60008451614e99818460208901614913565b845190830190614ead818360208901614913565b8451910190614ec0818360208801614913565b0195945050505050565b600060208284031215614edc57600080fd5b81518015158114610e3857600080fd5b634e487b7160e01b600052601260045260246000fd5b600082614f1157614f11614eec565b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112614f4357600080fd5b83018035915067ffffffffffffffff821115614f5e57600080fd5b602001915036819003821315614f7357600080fd5b9250929050565b600060018201614f8c57614f8c614c8b565b5060010190565b60008251614fa5818460208701614913565b9190910192915050565b808202811582820484141761074d5761074d614c8b565b600082614fd557614fd5614eec565b500690565b63ffffffff82811682821603908082111561232957612329614c8b565b8051602080830151919081101561380b5760001960209190910360031b1b16919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160e01b0382811682821681810283169291811582850482141761508f5761508f614c8b565b50505092915050565b60006001600160e01b03838116806150b2576150b2614eec565b92169190910492915050565b601f82111561174357600081815260208120601f850160051c810160208610156150e55750805b601f850160051c820191505b81811015615104578281556001016150f1565b505050505050565b815167ffffffffffffffff81111561512657615126614d59565b61513a816151348454614cb4565b846150be565b602080601f83116001811461516f57600084156151575750858301515b600019600386901b1c1916600185901b178555615104565b600085815260208120601f198616915b8281101561519e5788860151825594840194600190910190840161517f565b50858210156151bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
