UNPKG

@offchainlabs/stablecoin-evm

Version:

Circle's Stablecoin Smart Contracts on EVM-compatible blockchains

1,534 lines 135 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "FiatTokenCeloV2_2",
  "sourceName": "contracts/v2/celo/FiatTokenCeloV2_2.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "authorizer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        }
      ],
      "name": "AuthorizationCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "authorizer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        }
      ],
      "name": "AuthorizationUsed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "Blacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newBlacklister",
          "type": "address"
        }
      ],
      "name": "BlacklisterChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "FeeCallerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newMasterMinter",
          "type": "address"
        }
      ],
      "name": "MasterMinterChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minterAllowedAmount",
          "type": "uint256"
        }
      ],
      "name": "MinterConfigured",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldMinter",
          "type": "address"
        }
      ],
      "name": "MinterRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PauserChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newRescuer",
          "type": "address"
        }
      ],
      "name": "RescuerChanged",
      "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": true,
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "UnBlacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpause",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CANCEL_AUTHORIZATION_TYPEHASH",
      "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": "PERMIT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RECEIVE_WITH_AUTHORIZATION_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TRANSFER_WITH_AUTHORIZATION_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "authorizer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        }
      ],
      "name": "authorizationState",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": "_account",
          "type": "address"
        }
      ],
      "name": "blacklist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "blacklister",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "authorizer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "cancelAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "authorizer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "cancelAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minterAllowedAmount",
          "type": "uint256"
        }
      ],
      "name": "configureMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "feeRecipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "gatewayFeeRecipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "communityFund",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "refund",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tipTxFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gatewayFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "baseTxFee",
          "type": "uint256"
        }
      ],
      "name": "creditGasFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "debitGasFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "decrement",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeCaller",
      "outputs": [
        {
          "internalType": "address",
          "name": "value",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "increment",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenCurrency",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "tokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "newMasterMinter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newPauser",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newBlacklister",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "newName",
          "type": "string"
        }
      ],
      "name": "initializeV2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "lostAndFound",
          "type": "address"
        }
      ],
      "name": "initializeV2_1",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accountsToBlacklist",
          "type": "address[]"
        },
        {
          "internalType": "string",
          "name": "newSymbol",
          "type": "string"
        }
      ],
      "name": "initializeV2_2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isBlacklisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterMinter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        }
      ],
      "name": "minterAllowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": [],
      "name": "pauser",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validAfter",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validBefore",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "receiveWithAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validAfter",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validBefore",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "receiveWithAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "minter",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rescueERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rescuer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "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": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validAfter",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validBefore",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "transferWithAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validAfter",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "validBefore",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "nonce",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "transferWithAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "unBlacklist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newBlacklister",
          "type": "address"
        }
      ],
      "name": "updateBlacklister",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newFeeCaller",
          "type": "address"
        }
      ],
      "name": "updateFeeCaller",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newMasterMinter",
          "type": "address"
        }
      ],
      "name": "updateMasterMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newPauser",
          "type": "address"
        }
      ],
      "name": "updatePauser",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newRescuer",
          "type": "address"
        }
      ],
      "name": "updateRescuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526001805460ff60a01b191690556000600b553480156200002357600080fd5b506200002f3362000035565b62000057565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61646780620000676000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80638456cb59116101e9578063bd1024301161010f578063e5a6b10f116100ad578063f2fde38b1161007c578063f2fde38b1461128c578063f9f92be4146112bf578063fabf4482146112f2578063fe575a87146112fa57610399565b8063e5a6b10f146111ac578063e94a0102146111b4578063ec675539146111ed578063ef55bec61461122057610399565b8063d608ea64116100e9578063d608ea641461108d578063d9169487146110fd578063dd62ed3e14611105578063e3ee160e1461114057610399565b8063bd10243014610f43578063cf09299514610f4b578063d505accf1461102f57610399565b8063a0cc6a6811610187578063aa271e1a11610156578063aa271e1a14610dd2578063ad38bf2214610e05578063b2118a8d14610e38578063b7b7289914610e7b57610399565b8063a0cc6a6814610d25578063a457c2d714610d2d578063a9059cbb14610d66578063aa20e1e414610d9f57610399565b80638da5cb5b116101c35780638da5cb5b14610c3557806395d89b4114610c3d5780639fd0506d14610c455780639fd5a6cf14610c4d57610399565b80638456cb5914610b1657806388b7ab6314610b1e5780638a6db9c314610c0257610399565b806339509351116102ce578063554bab3c1161026c5780636a30b2531161023b5780636a30b25314610a4257806370a0823114610aa85780637ecebe0014610adb5780637f2eecc314610b0e57610399565b8063554bab3c1461098057806358cf9672146109b35780635a049a70146109ec5780635c975abb14610a3a57610399565b806342966c68116102a857806342966c6814610860578063430239b41461087d5780634e44d9561461093f57806354fd4d501461097857610399565b806339509351146107e65780633f4ba83a1461081f57806340c10f191461082757610399565b80633092afd51161033b5780633357162b116103155780633357162b146105b957806335d99f35146107a55780633644e515146107d657806338a63183146107de57610399565b80633092afd51461056057806330adf81f14610593578063313ce5671461059b57610399565b80631a895266116103775780631a8952661461048257806323b872dd146104b75780632ab60045146104fa5780632fc81e091461052d57610399565b806306fdde031461039e578063095ea7b31461041b57806318160ddd14610468575b600080fd5b6103a661132d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e05781810151838201526020016103c8565b50505050905090810190601f16801561040d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104546004803603604081101561043157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356113d9565b604080519115158252519081900360200190f35b61047061147a565b60408051918252519081900360200190f35b6104b56004803603602081101561049857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611480565b005b610454600480360360608110156104cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561153d565b6104b56004803603602081101561051057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117f8565b6104b56004803603602081101561054357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611959565b6104546004803603602081101561057657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119c1565b610470611aba565b6105a3611ade565b6040805160ff9092168252519081900360200190f35b6104b560048036036101008110156105d057600080fd5b8101906020810181356401000000008111156105eb57600080fd5b8201836020820111156105fd57600080fd5b8035906020019184600183028401116401000000008311171561061f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561067257600080fd5b82018360208201111561068457600080fd5b803590602001918460018302840111640100000000831117156106a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156106f957600080fd5b82018360208201111561070b57600080fd5b8035906020019184600183028401116401000000008311171561072d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff16925050602081013573ffffffffffffffffffffffffffffffffffffffff90811691604081013582169160608201358116916080013516611ae7565b6107ad611e29565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610470611e45565b6107ad611e54565b610454600480360360408110156107fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611e70565b6104b5611f08565b6104546004803603604081101561083d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611fcb565b6104b56004803603602081101561087657600080fd5b503561239c565b6104b56004803603604081101561089357600080fd5b8101906020810181356401000000008111156108ae57600080fd5b8201836020820111156108c057600080fd5b803590602001918460208302840111640100000000831117156108e257600080fd5b91939092909160208101903564010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b50909250905061263e565b6104546004803603604081101561095557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356127f5565b6103a6612988565b6104b56004803603602081101561099657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166129bf565b6104b5600480360360408110156109c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612b26565b6104b5600480360360a0811015610a0257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060ff6040820135169060608101359060800135612d97565b610454612e35565b6104b56004803603610100811015610a5957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e00135612e56565b61047060048036036020811015610abe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613150565b61047060048036036020811015610af157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613161565b610470613189565b6104b56131ad565b6104b5600480360360e0811015610b3457600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610b8d57600080fd5b820183602082011115610b9f57600080fd5b80359060200191846001830284011164010000000083111715610bc157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613287945050505050565b61047060048036036020811015610c1857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166133eb565b6107ad613413565b6103a661342f565b6107ad6134a8565b6104b5600480360360a0811015610c6357600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610cb057600080fd5b820183602082011115610cc257600080fd5b80359060200191846001830284011164010000000083111715610ce457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506134c4945050505050565b61047061355b565b61045460048036036040811015610d4357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561357f565b61045460048036036040811015610d7c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613617565b6104b560048036036020811015610db557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661377a565b61045460048036036020811015610de857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138e1565b6104b560048036036020811015610e1b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661390c565b6104b560048036036060811015610e4e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135613a73565b6104b560048036036060811015610e9157600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591810190606081016040820135640100000000811115610ece57600080fd5b820183602082011115610ee057600080fd5b80359060200191846001830284011164010000000083111715610f0257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613b09945050505050565b6107ad613b9e565b6104b5600480360360e0811015610f6157600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610fba57600080fd5b820183602082011115610fcc57600080fd5b80359060200191846001830284011164010000000083111715610fee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613bba945050505050565b6104b5600480360360e081101561104557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135613d13565b6104b5600480360360208110156110a357600080fd5b8101906020810181356401000000008111156110be57600080fd5b8201836020820111156110d057600080fd5b803590602001918460018302840111640100000000831117156110f257600080fd5b509092509050613db5565b610470613e9e565b6104706004803603604081101561111b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613ec2565b6104b5600480360361012081101561115757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613efa565b6103a6614062565b610454600480360360408110156111ca57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356140db565b6104b56004803603602081101561120357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614113565b6104b5600480360361012081101561123757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135614201565b6104b5600480360360208110156112a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661435c565b6104b5600480360360208110156112d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166144af565b6107ad61456c565b6104546004803603602081101561131057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614591565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b505050505081565b60015460009074010000000000000000000000000000000000000000900460ff161561146657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61147133848461459c565b50600192915050565b600b5490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806160b4602c913960400191505060405180910390fd5b6114f9816146e3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e90600090a250565b60015460009074010000000000000000000000000000000000000000900460ff16156115ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336115d4816146ee565b1561162a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b84611634816146ee565b1561168a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b84611694816146ee565b156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a60209081526040808320338452909152902054851115611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806161a46028913960400191505060405180910390fd5b61177e87878761471c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602090815260408083203384529091529020546117b990866148e7565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a60209081526040808320338452909152902055600193505050509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461187e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166118ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615fb7602a913960400191505060405180910390fd5b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60125460ff1660011461196b57600080fd5b60006119763061495e565b905080156119895761198930838361471c565b611992306149a8565b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061608b6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60065460ff1681565b60085474010000000000000000000000000000000000000000900460ff1615611b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061621f602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616151602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f8e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806161cc602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061630c6028913960400191505060405180910390fd5b8751611d1e9060049060208b0190615ccf565b508651611d329060059060208a0190615ccf565b508551611d46906007906020890190615ccf565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8716179055600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560018054821686841617905560028054909116918416919091179055611de0816149b3565b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e4f6149fa565b905090565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b60015460009074010000000000000000000000000000000000000000900460ff1615611efd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611471338484614aef565b60015473ffffffffffffffffffffffffffffffffffffffff163314611f78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806162c06022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60015460009074010000000000000000000000000000000000000000900460ff161561205857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff166120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806161306021913960400191505060405180910390fd5b336120ca816146ee565b15612120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8361212a816146ee565b15612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166121ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f236023913960400191505060405180910390fd5b60008411612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061603c6029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156122ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616292602e913960400191505060405180910390fd5b600b546122bb9086614b39565b600b556122da866122d5876122cf8361495e565b90614b39565b614bb4565b6122e481866148e7565b336000818152600d6020908152604091829020939093558051888152905173ffffffffffffffffffffffffffffffffffffffff8a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a360408051868152905173ffffffffffffffffffffffffffffffffffffffff8816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b60015474010000000000000000000000000000000000000000900460ff161561242657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806161306021913960400191505060405180910390fd5b33612498816146ee565b156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b60006124f93361495e565b905060008311612554576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615efa6029913960400191505060405180910390fd5b828110156125ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061610a6026913960400191505060405180910390fd5b600b546125ba90846148e7565b600b556125cb336122d583866148e7565b60408051848152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60125460ff1660021461265057600080fd5b61265c60058383615d4d565b5060005b8381101561279e576003600086868481811061267857fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff168352508101919091526040016000205460ff16612700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180615def603d913960400191505060405180910390fd5b61273185858381811061270f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166149a8565b6003600086868481811061274157fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101612660565b506127a8306149a8565b505030600090815260036020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556012805490911690911790555050565b60015460009074010000000000000000000000000000000000000000900460ff161561288257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146128f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061608b6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314612a4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615e4f6028913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b612b2e61456c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806163b9602f913960400191505060405180910390fd5b60015474010000000000000000000000000000000000000000900460ff1615612c3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b81612c45816146ee565b15612c9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b612ca3614cb5565b15612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615e776031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612d65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806162496025913960400191505060405180910390fd5b612d7183600084614cda565b507fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda285550565b60015474010000000000000000000000000000000000000000900460ff1615612e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612e2e8585858585614d33565b5050505050565b60015474010000000000000000000000000000000000000000900460ff1681565b612e5e61456c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806163b9602f913960400191505060405180910390fd5b60015474010000000000000000000000000000000000000000900460ff1615612f6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b87612f75816146ee565b15612fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b87612fd5816146ee565b1561302b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b86613035816146ee565b1561308b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b600061309b856122cf8a8a614b39565b9050806130a6614cb5565b146130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806160066036913960400191505060405180910390fd5b61310860008d83614cda565b6131138c8c8961471c565b61311e8c8a8761471c565b60007fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda2855505050505050505050505050565b600061315b8261495e565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526011602052604090205490565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b60015473ffffffffffffffffffffffffffffffffffffffff16331461321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806162c06022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60015474010000000000000000000000000000000000000000900460ff161561331157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b8661331b816146ee565b15613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8661337b816146ee565b156133d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6133e089898989898989614d73565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff161561354e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612e2e8585858585614e94565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b60015460009074010000000000000000000000000000000000000000900460ff161561360c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611471338484615158565b60015460009074010000000000000000000000000000000000000000900460ff16156136a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336136ae816146ee565b15613704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8361370e816146ee565b15613764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b61376f33868661471c565b506001949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461380057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661386c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616151602f913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461399257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166139fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806163626032913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b600e5473ffffffffffffffffffffffffffffffffffffffff163314613ae3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806161806024913960400191505060405180910390fd5b613b0473ffffffffffffffffffffffffffffffffffffffff841683836151b4565b505050565b60015474010000000000000000000000000000000000000000900460ff1615613b9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613b04838383615241565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff1615613c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b86613c4e816146ee565b15613ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b86613cae816146ee565b15613d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6133e08989898989898961534b565b60015474010000000000000000000000000000000000000000900460ff1615613d9d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613dac878787878787876153e9565b50505050505050565b60085474010000000000000000000000000000000000000000900460ff168015613de2575060125460ff16155b613deb57600080fd5b613df760048383615d4d565b50613e6c82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600181527f32000000000000000000000000000000000000000000000000000000000000006020820152915061542b9050565b600f555050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600a6020908152604080832093909416825291909152205490565b60015474010000000000000000000000000000000000000000900460ff1615613f8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613f8e816146ee565b15613fe4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b88613fee816146ee565b15614044576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6140558b8b8b8b8b8b8b8b8b615441565b5050505050505050505050565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601060209081526040808320938352929052205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461419957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7fdca914aef3e4e19727959ebb1e70b58822e2c7b796d303902adc19513fcb4af581905560405173ffffffffffffffffffffffffffffffffffffffff8216907f3fa7e4a3137f85425c43c8d9b4e747ddb51a6b29d4df85da6a5f3eb1df84d94090600090a250565b60015474010000000000000000000000000000000000000000900460ff161561428b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88614295816146ee565b156142eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b886142f5816146ee565b1561434b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6140558b8b8b8b8b8b8b8b8b615485565b60005473ffffffffffffffffffffffffffffffffffffffff1633146143e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661444e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615f466026913960400191505060405180910390fd5b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a16144ac816149b3565b50565b60025473ffffffffffffffffffffffffffffffffffffffff16331461451f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806160b4602c913960400191505060405180910390fd5b614528816149a8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85590600090a250565b7fdca914aef3e4e19727959ebb1e70b58822e2c7b796d303902adc19513fcb4af55490565b600061315b826146ee565b73ffffffffffffffffffffffffffffffffffffffff8316614608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061626e6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216614674576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615f6c6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6144ac8160006154c9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205460ff1c60011490565b73ffffffffffffffffffffffffffffffffffffffff8316614788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806162496025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615e2c6023913960400191505060405180910390fd5b6147fd8361495e565b811115614855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806160656026913960400191505060405180910390fd5b61486c836122d5836148668761495e565b906148e7565b61487d826122d5836122cf8661495e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561495857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff166000908152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6144ac8160016154c9565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152600093611e4f9391929091830182828015614aa75780601f10614a7c57610100808354040283529160200191614aa7565b820191906000526020600020905b815481529060010190602001808311614a8a57829003601f168201915b50505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250614aea615552565b615556565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600a6020908152604080832093861683529290522054613b049084908490614b349085614b39565b61459c565b600082820183811015614bad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115614c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806160e0602a913960400191505060405180910390fd5b614c36826146ee565b15614c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615fe16025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902055565b7fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda285490565b600081116147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615ea86027913960400191505060405180910390fd5b612e2e8585848487604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052615241565b73ffffffffffffffffffffffffffffffffffffffff86163314614de1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806161fa6025913960400191505060405180910390fd5b614ded878386866155ca565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614e7f9088908361568a565b614e898783615808565b613dac87878761471c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821480614ec25750428210155b614f2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a207065726d697420697320657870697265640000604482015290519081900360640190fd5b6000614fd5614f3a6149fa565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526011602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938b166060840152608083018a905260a083019390935260c08083018990528151808403909101815260e09092019052805191012061588d565b905073__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea6528783856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561506257818101518382015260200161504a565b50505050905090810190601f16801561508f5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156150ae57600080fd5b505af41580156150c2573d6000803e3d6000fd5b505050506040513d60208110156150d857600080fd5b505161514557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f454950323631323a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b61515086868661459c565b505050505050565b613b048383614b348460405180606001604052806025815260200161640d6025913973ffffffffffffffffffffffffffffffffffffffff808a166000908152600a60209081526040808320938c168352929052205491906158c7565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613b04908490615978565b61524b8383615a50565b6152c5837f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960001b8585604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052805190602001208361568a565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260106020908152604080832086845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518492917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050565b615357878386866155ca565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614e7f9088908361568a565b613dac87878787868689604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614e94565b600046615439848483615556565b949350505050565b6133e089898989898988888b604051602001808481526020018381526020018260ff1660f81b8152600101935050505060405160208183030381529060405261534b565b6133e089898989898988888b604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614d73565b806154dc576154d78261495e565b615525565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960205260409020547f8000000000000000000000000000000000000000000000000000000000000000175b73ffffffffffffffffffffffffffffffffffffffff90921660009081526009602052604090209190915550565b4690565b8251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b814211615622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615ecf602b913960400191505060405180910390fd5b80421061567a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163e86025913960400191505060405180910390fd5b6156848484615a50565b50505050565b73__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea652846156b66156b06149fa565b8661588d565b846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561572557818101518382015260200161570d565b50505050905090810190601f1680156157525780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561577157600080fd5b505af4158015615785573d6000803e3d6000fd5b505050506040513d602081101561579b57600080fd5b5051613b0457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260106020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008184841115615970576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561593557818101518382015260200161591d565b50505050905090810190601f1680156159625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606159da826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615ade9092919063ffffffff16565b805190915015613b04578080602001905160208110156159f957600080fd5b5051613b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806162e2602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832084845290915290205460ff1615615ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616334602e913960400191505060405180910390fd5b5050565b6060615439848460008585615af285615c49565b615b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615bc757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101615b8a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615c29576040519150601f19603f3d011682016040523d82523d6000602084013e615c2e565b606091505b5091509150615c3e828286615c4f565b979650505050505050565b3b151590565b60608315615c5e575081614bad565b825115615c6e5782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561593557818101518382015260200161591d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d1057805160ff1916838001178555615d3d565b82800160010185558215615d3d579182015b82811115615d3d578251825591602001919060010190615d22565b50615d49929150615dd9565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615dac578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555615d3d565b82800160010185558215615d3d579182015b82811115615d3d578235825591602001919060010190615dbe565b5b80821115615d495760008155600101615dda56fe46696174546f6b656e56325f323a20426c61636b6c697374696e672070726576696f75736c7920756e626c61636b6c6973746564206163636f756e742145524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e43656c6f56325f323a204d7573742066756c6c7920637265646974206265666f726520646562697446696174546f6b656e43656c6f56325f323a204d7573742072657365727665203e20302067617346696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f74207965742076616c696446696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f2061646472657373526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737346696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c697374656446696174546f6b656e43656c6f56325f323a20456974686572206e6f206465626974206f72206d69736d61746368656420646562697446696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e56325f323a2042616c616e636520657863656564732028325e323535202d20312946696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f2061646472657373526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636546696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e56323a2063616c6c6572206d7573742062652074686520706179656546696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656446696174546f6b656e3a206e6577206f776e657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e2069732075736564206f722063616e63656c6564426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c697374656446696174546f6b656e43656c6f56325f323a2063616c6c6572206973206e6f7420746865206665652063616c6c657246696174546f6b656e56323a20617574686f72697a6174696f6e206973206578706972656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fe7ea06c5ab44d34e18cf3eca27cc8379021ff0d4806807fbb5a7046022e348564736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103995760003560e01c80638456cb59116101e9578063bd1024301161010f578063e5a6b10f116100ad578063f2fde38b1161007c578063f2fde38b1461128c578063f9f92be4146112bf578063fabf4482146112f2578063fe575a87146112fa57610399565b8063e5a6b10f146111ac578063e94a0102146111b4578063ec675539146111ed578063ef55bec61461122057610399565b8063d608ea64116100e9578063d608ea641461108d578063d9169487146110fd578063dd62ed3e14611105578063e3ee160e1461114057610399565b8063bd10243014610f43578063cf09299514610f4b578063d505accf1461102f57610399565b8063a0cc6a6811610187578063aa271e1a11610156578063aa271e1a14610dd2578063ad38bf2214610e05578063b2118a8d14610e38578063b7b7289914610e7b57610399565b8063a0cc6a6814610d25578063a457c2d714610d2d578063a9059cbb14610d66578063aa20e1e414610d9f57610399565b80638da5cb5b116101c35780638da5cb5b14610c3557806395d89b4114610c3d5780639fd0506d14610c455780639fd5a6cf14610c4d57610399565b80638456cb5914610b1657806388b7ab6314610b1e5780638a6db9c314610c0257610399565b806339509351116102ce578063554bab3c1161026c5780636a30b2531161023b5780636a30b25314610a4257806370a0823114610aa85780637ecebe0014610adb5780637f2eecc314610b0e57610399565b8063554bab3c1461098057806358cf9672146109b35780635a049a70146109ec5780635c975abb14610a3a57610399565b806342966c68116102a857806342966c6814610860578063430239b41461087d5780634e44d9561461093f57806354fd4d501461097857610399565b806339509351146107e65780633f4ba83a1461081f57806340c10f191461082757610399565b80633092afd51161033b5780633357162b116103155780633357162b146105b957806335d99f35146107a55780633644e515146107d657806338a63183146107de57610399565b80633092afd51461056057806330adf81f14610593578063313ce5671461059b57610399565b80631a895266116103775780631a8952661461048257806323b872dd146104b75780632ab60045146104fa5780632fc81e091461052d57610399565b806306fdde031461039e578063095ea7b31461041b57806318160ddd14610468575b600080fd5b6103a661132d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e05781810151838201526020016103c8565b50505050905090810190601f16801561040d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104546004803603604081101561043157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356113d9565b604080519115158252519081900360200190f35b61047061147a565b60408051918252519081900360200190f35b6104b56004803603602081101561049857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611480565b005b610454600480360360608110156104cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561153d565b6104b56004803603602081101561051057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117f8565b6104b56004803603602081101561054357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611959565b6104546004803603602081101561057657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119c1565b610470611aba565b6105a3611ade565b6040805160ff9092168252519081900360200190f35b6104b560048036036101008110156105d057600080fd5b8101906020810181356401000000008111156105eb57600080fd5b8201836020820111156105fd57600080fd5b8035906020019184600183028401116401000000008311171561061f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561067257600080fd5b82018360208201111561068457600080fd5b803590602001918460018302840111640100000000831117156106a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156106f957600080fd5b82018360208201111561070b57600080fd5b8035906020019184600183028401116401000000008311171561072d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff16925050602081013573ffffffffffffffffffffffffffffffffffffffff90811691604081013582169160608201358116916080013516611ae7565b6107ad611e29565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610470611e45565b6107ad611e54565b610454600480360360408110156107fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611e70565b6104b5611f08565b6104546004803603604081101561083d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611fcb565b6104b56004803603602081101561087657600080fd5b503561239c565b6104b56004803603604081101561089357600080fd5b8101906020810181356401000000008111156108ae57600080fd5b8201836020820111156108c057600080fd5b803590602001918460208302840111640100000000831117156108e257600080fd5b91939092909160208101903564010000000081111561090057600080fd5b82018360208201111561091257600080fd5b8035906020019184600183028401116401000000008311171561093457600080fd5b50909250905061263e565b6104546004803603604081101561095557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356127f5565b6103a6612988565b6104b56004803603602081101561099657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166129bf565b6104b5600480360360408110156109c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612b26565b6104b5600480360360a0811015610a0257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060ff6040820135169060608101359060800135612d97565b610454612e35565b6104b56004803603610100811015610a5957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e00135612e56565b61047060048036036020811015610abe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613150565b61047060048036036020811015610af157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613161565b610470613189565b6104b56131ad565b6104b5600480360360e0811015610b3457600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610b8d57600080fd5b820183602082011115610b9f57600080fd5b80359060200191846001830284011164010000000083111715610bc157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613287945050505050565b61047060048036036020811015610c1857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166133eb565b6107ad613413565b6103a661342f565b6107ad6134a8565b6104b5600480360360a0811015610c6357600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610cb057600080fd5b820183602082011115610cc257600080fd5b80359060200191846001830284011164010000000083111715610ce457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506134c4945050505050565b61047061355b565b61045460048036036040811015610d4357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561357f565b61045460048036036040811015610d7c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613617565b6104b560048036036020811015610db557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661377a565b61045460048036036020811015610de857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138e1565b6104b560048036036020811015610e1b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661390c565b6104b560048036036060811015610e4e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135613a73565b6104b560048036036060811015610e9157600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591810190606081016040820135640100000000811115610ece57600080fd5b820183602082011115610ee057600080fd5b80359060200191846001830284011164010000000083111715610f0257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613b09945050505050565b6107ad613b9e565b6104b5600480360360e0811015610f6157600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610fba57600080fd5b820183602082011115610fcc57600080fd5b80359060200191846001830284011164010000000083111715610fee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613bba945050505050565b6104b5600480360360e081101561104557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135613d13565b6104b5600480360360208110156110a357600080fd5b8101906020810181356401000000008111156110be57600080fd5b8201836020820111156110d057600080fd5b803590602001918460018302840111640100000000831117156110f257600080fd5b509092509050613db5565b610470613e9e565b6104706004803603604081101561111b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613ec2565b6104b5600480360361012081101561115757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613efa565b6103a6614062565b610454600480360360408110156111ca57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356140db565b6104b56004803603602081101561120357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614113565b6104b5600480360361012081101561123757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135614201565b6104b5600480360360208110156112a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661435c565b6104b5600480360360208110156112d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166144af565b6107ad61456c565b6104546004803603602081101561131057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614591565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b505050505081565b60015460009074010000000000000000000000000000000000000000900460ff161561146657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61147133848461459c565b50600192915050565b600b5490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146114f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806160b4602c913960400191505060405180910390fd5b6114f9816146e3565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e90600090a250565b60015460009074010000000000000000000000000000000000000000900460ff16156115ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336115d4816146ee565b1561162a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b84611634816146ee565b1561168a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b84611694816146ee565b156116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a60209081526040808320338452909152902054851115611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806161a46028913960400191505060405180910390fd5b61177e87878761471c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602090815260408083203384529091529020546117b990866148e7565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a60209081526040808320338452909152902055600193505050509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461187e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166118ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615fb7602a913960400191505060405180910390fd5b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60125460ff1660011461196b57600080fd5b60006119763061495e565b905080156119895761198930838361471c565b611992306149a8565b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061608b6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60065460ff1681565b60085474010000000000000000000000000000000000000000900460ff1615611b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061621f602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616151602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615f8e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806161cc602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061630c6028913960400191505060405180910390fd5b8751611d1e9060049060208b0190615ccf565b508651611d329060059060208a0190615ccf565b508551611d46906007906020890190615ccf565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8716179055600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560018054821686841617905560028054909116918416919091179055611de0816149b3565b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e4f6149fa565b905090565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b60015460009074010000000000000000000000000000000000000000900460ff1615611efd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611471338484614aef565b60015473ffffffffffffffffffffffffffffffffffffffff163314611f78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806162c06022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60015460009074010000000000000000000000000000000000000000900460ff161561205857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff166120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806161306021913960400191505060405180910390fd5b336120ca816146ee565b15612120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8361212a816146ee565b15612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166121ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f236023913960400191505060405180910390fd5b60008411612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061603c6029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156122ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616292602e913960400191505060405180910390fd5b600b546122bb9086614b39565b600b556122da866122d5876122cf8361495e565b90614b39565b614bb4565b6122e481866148e7565b336000818152600d6020908152604091829020939093558051888152905173ffffffffffffffffffffffffffffffffffffffff8a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a360408051868152905173ffffffffffffffffffffffffffffffffffffffff8816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b60015474010000000000000000000000000000000000000000900460ff161561242657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806161306021913960400191505060405180910390fd5b33612498816146ee565b156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b60006124f93361495e565b905060008311612554576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615efa6029913960400191505060405180910390fd5b828110156125ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061610a6026913960400191505060405180910390fd5b600b546125ba90846148e7565b600b556125cb336122d583866148e7565b60408051848152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60125460ff1660021461265057600080fd5b61265c60058383615d4d565b5060005b8381101561279e576003600086868481811061267857fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff168352508101919091526040016000205460ff16612700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180615def603d913960400191505060405180910390fd5b61273185858381811061270f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166149a8565b6003600086868481811061274157fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101612660565b506127a8306149a8565b505030600090815260036020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556012805490911690911790555050565b60015460009074010000000000000000000000000000000000000000900460ff161561288257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146128f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061608b6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314612a4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615e4f6028913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b612b2e61456c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806163b9602f913960400191505060405180910390fd5b60015474010000000000000000000000000000000000000000900460ff1615612c3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b81612c45816146ee565b15612c9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b612ca3614cb5565b15612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615e776031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316612d65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806162496025913960400191505060405180910390fd5b612d7183600084614cda565b507fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda285550565b60015474010000000000000000000000000000000000000000900460ff1615612e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612e2e8585858585614d33565b5050505050565b60015474010000000000000000000000000000000000000000900460ff1681565b612e5e61456c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806163b9602f913960400191505060405180910390fd5b60015474010000000000000000000000000000000000000000900460ff1615612f6b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b87612f75816146ee565b15612fcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b87612fd5816146ee565b1561302b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b86613035816146ee565b1561308b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b600061309b856122cf8a8a614b39565b9050806130a6614cb5565b146130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806160066036913960400191505060405180910390fd5b61310860008d83614cda565b6131138c8c8961471c565b61311e8c8a8761471c565b60007fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda2855505050505050505050505050565b600061315b8261495e565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526011602052604090205490565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b60015473ffffffffffffffffffffffffffffffffffffffff16331461321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806162c06022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60015474010000000000000000000000000000000000000000900460ff161561331157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b8661331b816146ee565b15613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8661337b816146ee565b156133d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6133e089898989898989614d73565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff161561354e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612e2e8585858585614e94565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b60015460009074010000000000000000000000000000000000000000900460ff161561360c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611471338484615158565b60015460009074010000000000000000000000000000000000000000900460ff16156136a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336136ae816146ee565b15613704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b8361370e816146ee565b15613764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b61376f33868661471c565b506001949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461380057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661386c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616151602f913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461399257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166139fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806163626032913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b600e5473ffffffffffffffffffffffffffffffffffffffff163314613ae3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806161806024913960400191505060405180910390fd5b613b0473ffffffffffffffffffffffffffffffffffffffff841683836151b4565b505050565b60015474010000000000000000000000000000000000000000900460ff1615613b9357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613b04838383615241565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff1615613c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b86613c4e816146ee565b15613ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b86613cae816146ee565b15613d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6133e08989898989898961534b565b60015474010000000000000000000000000000000000000000900460ff1615613d9d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613dac878787878787876153e9565b50505050505050565b60085474010000000000000000000000000000000000000000900460ff168015613de2575060125460ff16155b613deb57600080fd5b613df760048383615d4d565b50613e6c82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600181527f32000000000000000000000000000000000000000000000000000000000000006020820152915061542b9050565b600f555050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600a6020908152604080832093909416825291909152205490565b60015474010000000000000000000000000000000000000000900460ff1615613f8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613f8e816146ee565b15613fe4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b88613fee816146ee565b15614044576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6140558b8b8b8b8b8b8b8b8b615441565b5050505050505050505050565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156113d15780601f106113a6576101008083540402835291602001916113d1565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601060209081526040808320938352929052205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461419957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7fdca914aef3e4e19727959ebb1e70b58822e2c7b796d303902adc19513fcb4af581905560405173ffffffffffffffffffffffffffffffffffffffff8216907f3fa7e4a3137f85425c43c8d9b4e747ddb51a6b29d4df85da6a5f3eb1df84d94090600090a250565b60015474010000000000000000000000000000000000000000900460ff161561428b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88614295816146ee565b156142eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b886142f5816146ee565b1561434b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163946025913960400191505060405180910390fd5b6140558b8b8b8b8b8b8b8b8b615485565b60005473ffffffffffffffffffffffffffffffffffffffff1633146143e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661444e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615f466026913960400191505060405180910390fd5b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a16144ac816149b3565b50565b60025473ffffffffffffffffffffffffffffffffffffffff16331461451f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806160b4602c913960400191505060405180910390fd5b614528816149a8565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85590600090a250565b7fdca914aef3e4e19727959ebb1e70b58822e2c7b796d303902adc19513fcb4af55490565b600061315b826146ee565b73ffffffffffffffffffffffffffffffffffffffff8316614608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061626e6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216614674576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615f6c6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6144ac8160006154c9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205460ff1c60011490565b73ffffffffffffffffffffffffffffffffffffffff8316614788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806162496025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615e2c6023913960400191505060405180910390fd5b6147fd8361495e565b811115614855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806160656026913960400191505060405180910390fd5b61486c836122d5836148668761495e565b906148e7565b61487d826122d5836122cf8661495e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561495857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff166000908152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b6144ac8160016154c9565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152600093611e4f9391929091830182828015614aa75780601f10614a7c57610100808354040283529160200191614aa7565b820191906000526020600020905b815481529060010190602001808311614a8a57829003601f168201915b50505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250614aea615552565b615556565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600a6020908152604080832093861683529290522054613b049084908490614b349085614b39565b61459c565b600082820183811015614bad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115614c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806160e0602a913960400191505060405180910390fd5b614c36826146ee565b15614c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615fe16025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902055565b7fd90dccaa76fe7208f2f477143b6adabfeb5d4a5136982894dfc51177fa8eda285490565b600081116147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615ea86027913960400191505060405180910390fd5b612e2e8585848487604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052615241565b73ffffffffffffffffffffffffffffffffffffffff86163314614de1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806161fa6025913960400191505060405180910390fd5b614ded878386866155ca565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614e7f9088908361568a565b614e898783615808565b613dac87878761471c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821480614ec25750428210155b614f2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a207065726d697420697320657870697265640000604482015290519081900360640190fd5b6000614fd5614f3a6149fa565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526011602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938b166060840152608083018a905260a083019390935260c08083018990528151808403909101815260e09092019052805191012061588d565b905073__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea6528783856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561506257818101518382015260200161504a565b50505050905090810190601f16801561508f5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156150ae57600080fd5b505af41580156150c2573d6000803e3d6000fd5b505050506040513d60208110156150d857600080fd5b505161514557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f454950323631323a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b61515086868661459c565b505050505050565b613b048383614b348460405180606001604052806025815260200161640d6025913973ffffffffffffffffffffffffffffffffffffffff808a166000908152600a60209081526040808320938c168352929052205491906158c7565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613b04908490615978565b61524b8383615a50565b6152c5837f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960001b8585604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052805190602001208361568a565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260106020908152604080832086845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518492917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050565b615357878386866155ca565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614e7f9088908361568a565b613dac87878787868689604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614e94565b600046615439848483615556565b949350505050565b6133e089898989898988888b604051602001808481526020018381526020018260ff1660f81b8152600101935050505060405160208183030381529060405261534b565b6133e089898989898988888b604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614d73565b806154dc576154d78261495e565b615525565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960205260409020547f8000000000000000000000000000000000000000000000000000000000000000175b73ffffffffffffffffffffffffffffffffffffffff90921660009081526009602052604090209190915550565b4690565b8251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b814211615622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615ecf602b913960400191505060405180910390fd5b80421061567a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806163e86025913960400191505060405180910390fd5b6156848484615a50565b50505050565b73__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea652846156b66156b06149fa565b8661588d565b846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561572557818101518382015260200161570d565b50505050905090810190601f1680156157525780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561577157600080fd5b505af4158015615785573d6000803e3d6000fd5b505050506040513d602081101561579b57600080fd5b5051613b0457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260106020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008184841115615970576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561593557818101518382015260200161591d565b50505050905090810190601f1680156159625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606159da826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615ade9092919063ffffffff16565b805190915015613b04578080602001905160208110156159f957600080fd5b5051613b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806162e2602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832084845290915290205460ff1615615ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616334602e913960400191505060405180910390fd5b5050565b6060615439848460008585615af285615c49565b615b5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615bc757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101615b8a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615c29576040519150601f19603f3d011682016040523d82523d6000602084013e615c2e565b606091505b5091509150615c3e828286615c4f565b979650505050505050565b3b151590565b60608315615c5e575081614bad565b825115615c6e5782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561593557818101518382015260200161591d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d1057805160ff1916838001178555615d3d565b82800160010185558215615d3d579182015b82811115615d3d578251825591602001919060010190615d22565b50615d49929150615dd9565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615dac578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555615d3d565b82800160010185558215615d3d579182015b82811115615d3d578235825591602001919060010190615dbe565b5b80821115615d495760008155600101615dda56fe46696174546f6b656e56325f323a20426c61636b6c697374696e672070726576696f75736c7920756e626c61636b6c6973746564206163636f756e742145524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e43656c6f56325f323a204d7573742066756c6c7920637265646974206265666f726520646562697446696174546f6b656e43656c6f56325f323a204d7573742072657365727665203e20302067617346696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f74207965742076616c696446696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f2061646472657373526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737346696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c697374656446696174546f6b656e43656c6f56325f323a20456974686572206e6f206465626974206f72206d69736d61746368656420646562697446696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e56325f323a2042616c616e636520657863656564732028325e323535202d20312946696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f2061646472657373526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636546696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e56323a2063616c6c6572206d7573742062652074686520706179656546696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656446696174546f6b656e3a206e6577206f776e657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e2069732075736564206f722063616e63656c6564426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c697374656446696174546f6b656e43656c6f56325f323a2063616c6c6572206973206e6f7420746865206665652063616c6c657246696174546f6b656e56323a20617574686f72697a6174696f6e206973206578706972656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fe7ea06c5ab44d34e18cf3eca27cc8379021ff0d4806807fbb5a7046022e348564736f6c634300060c0033",
  "linkReferences": {
    "contracts/util/SignatureChecker.sol": {
      "SignatureChecker": [
        {
          "length": 20,
          "start": 20544
        },
        {
          "length": 20,
          "start": 22259
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/util/SignatureChecker.sol": {
      "SignatureChecker": [
        {
          "length": 20,
          "start": 20441
        },
        {
          "length": 20,
          "start": 22156
        }
      ]
    }
  }
}