{
  "_format": "hh-sol-artifact-1",
  "contractName": "UpgradedFiatTokenV2_2NewFieldsTest",
  "sourceName": "contracts/test/UpgradedFiatTokenV2_2NewFieldsTest.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "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": "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": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "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": "bool",
          "name": "_newBool",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "_newAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newUint",
          "type": "uint256"
        }
      ],
      "name": "initV2",
      "outputs": [],
      "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": "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"
        },
        {
          "internalType": "bool",
          "name": "_newBool",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "_newAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newUint",
          "type": "uint256"
        }
      ],
      "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": [],
      "name": "newAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newBool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newUint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "_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": "0x60806040526001805460ff60a01b191690556000600b553480156200002357600080fd5b506200002f3362000035565b62000057565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b615fdb80620000676000396000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806388b7ab63116101e9578063ccdb3f451161010f578063e3ee160e116100ad578063f2fde38b1161007c578063f2fde38b1461137a578063f9bf7728146113ad578063f9f92be4146113b5578063fe575a87146113e8576103a4565b8063e3ee160e14611261578063e5a6b10f146112cd578063e94a0102146112d5578063ef55bec61461130e576103a4565b8063d608ea64116100e9578063d608ea641461116d578063d76c43c6146111dd578063d91694871461121e578063dd62ed3e14611226576103a4565b8063ccdb3f4514611023578063cf0929951461102b578063d505accf1461110f576103a4565b8063a457c2d711610187578063ad38bf2211610156578063ad38bf2214610edd578063b2118a8d14610f10578063b7b7289914610f53578063bd1024301461101b576103a4565b8063a457c2d714610e05578063a9059cbb14610e3e578063aa20e1e414610e77578063aa271e1a14610eaa576103a4565b806395d89b41116101c357806395d89b4114610d155780639fd0506d14610d1d5780639fd5a6cf14610d25578063a0cc6a6814610dfd576103a4565b806388b7ab6314610bf65780638a6db9c314610cda5780638da5cb5b14610d0d576103a4565b806339509351116102ce578063554bab3c1161026c5780637ec806721161023b5780637ec8067214610a4f5780637ecebe0014610bb35780637f2eecc314610be65780638456cb5914610bee576103a4565b8063554bab3c146109935780635a049a70146109c65780635c975abb14610a1457806370a0823114610a1c576103a4565b806342966c68116102a857806342966c6814610873578063430239b4146108905780634e44d9561461095257806354fd4d501461098b576103a4565b806339509351146107f95780633f4ba83a1461083257806340c10f191461083a576103a4565b80632fc81e09116103465780633357162b116103155780633357162b146105cc57806335d99f35146107b85780633644e515146107e957806338a63183146107f1576103a4565b80632fc81e09146105405780633092afd51461057357806330adf81f146105a6578063313ce567146105ae576103a4565b806318160ddd1161038257806318160ddd1461047b5780631a8952661461049557806323b872dd146104ca5780632ab600451461050d576103a4565b806306fdde03146103a9578063095ea7b31461042657806310ae563814610473575b600080fd5b6103b161141b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61045f6004803603604081101561043c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356114c7565b604080519115158252519081900360200190f35b61045f611568565b610483611576565b60408051918252519081900360200190f35b6104c8600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661157c565b005b61045f600480360360608110156104e057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611639565b6104c86004803603602081101561052357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118f4565b6104c86004803603602081101561055657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a55565b61045f6004803603602081101561058957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611abd565b610483611bb6565b6105b6611bda565b6040805160ff9092168252519081900360200190f35b6104c860048036036101008110156105e357600080fd5b8101906020810181356401000000008111156105fe57600080fd5b82018360208201111561061057600080fd5b8035906020019184600183028401116401000000008311171561063257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561070c57600080fd5b82018360208201111561071e57600080fd5b8035906020019184600183028401116401000000008311171561074057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff16925050602081013573ffffffffffffffffffffffffffffffffffffffff90811691604081013582169160608201358116916080013516611be3565b6107c0611f25565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610483611f41565b6107c0611f50565b61045f6004803603604081101561080f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611f6c565b6104c8612004565b61045f6004803603604081101561085057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356120c7565b6104c86004803603602081101561088957600080fd5b5035612498565b6104c8600480360360408110156108a657600080fd5b8101906020810181356401000000008111156108c157600080fd5b8201836020820111156108d357600080fd5b803590602001918460208302840111640100000000831117156108f557600080fd5b91939092909160208101903564010000000081111561091357600080fd5b82018360208201111561092557600080fd5b8035906020019184600183028401116401000000008311171561094757600080fd5b50909250905061273a565b61045f6004803603604081101561096857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356128f1565b6103b1612a84565b6104c8600480360360208110156109a957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612abb565b6104c8600480360360a08110156109dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060ff6040820135169060608101359060800135612c22565b61045f612cc0565b61048360048036036020811015610a3257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ce1565b6104c86004803603610160811015610a6657600080fd5b810190602081018135640100000000811115610a8157600080fd5b820183602082011115610a9357600080fd5b80359060200191846001830284011164010000000083111715610ab557600080fd5b919390929091602081019035640100000000811115610ad357600080fd5b820183602082011115610ae557600080fd5b80359060200191846001830284011164010000000083111715610b0757600080fd5b919390929091602081019035640100000000811115610b2557600080fd5b820183602082011115610b3757600080fd5b80359060200191846001830284011164010000000083111715610b5957600080fd5b919350915060ff8135169073ffffffffffffffffffffffffffffffffffffffff602082013581169160408101358216916060820135811691608081013582169160a082013515159160c08101359091169060e00135612cf2565b61048360048036036020811015610bc957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ddd565b610483612e05565b6104c8612e29565b6104c8600480360360e0811015610c0c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610c6557600080fd5b820183602082011115610c7757600080fd5b80359060200191846001830284011164010000000083111715610c9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612f03945050505050565b61048360048036036020811015610cf057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613067565b6107c061308f565b6103b16130ab565b6107c0613124565b6104c8600480360360a0811015610d3b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610d8857600080fd5b820183602082011115610d9a57600080fd5b80359060200191846001830284011164010000000083111715610dbc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613140945050505050565b6104836131d7565b61045f60048036036040811015610e1b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356131fb565b61045f60048036036040811015610e5457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613293565b6104c860048036036020811015610e8d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166133f6565b61045f60048036036020811015610ec057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661355d565b6104c860048036036020811015610ef357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613588565b6104c860048036036060811015610f2657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356136ef565b6104c860048036036060811015610f6957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591810190606081016040820135640100000000811115610fa657600080fd5b820183602082011115610fb857600080fd5b80359060200191846001830284011164010000000083111715610fda57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613785945050505050565b6107c061381a565b6107c0613836565b6104c8600480360360e081101561104157600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c082013564010000000081111561109a57600080fd5b8201836020820111156110ac57600080fd5b803590602001918460018302840111640100000000831117156110ce57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613858945050505050565b6104c8600480360360e081101561112557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356139b1565b6104c86004803603602081101561118357600080fd5b81019060208101813564010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b509092509050613a53565b6104c8600480360360608110156111f357600080fd5b50803515159073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613b3c565b610483613c5a565b6104836004803603604081101561123c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613c7e565b6104c8600480360361012081101561127857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613cb6565b6103b1613e1e565b61045f600480360360408110156112eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613e97565b6104c8600480360361012081101561132557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613ecf565b6104c86004803603602081101561139057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661402a565b61048361417d565b6104c8600480360360208110156113cb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614183565b61045f600480360360208110156113fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614240565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b505050505081565b60015460009074010000000000000000000000000000000000000000900460ff161561155457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f33848461424b565b50600192915050565b601254610100900460ff1681565b600b5490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146115ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c57602c913960400191505060405180910390fd5b6115f581614392565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e90600090a250565b60015460009074010000000000000000000000000000000000000000900460ff16156116c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336116d08161439d565b15611726576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b846117308161439d565b15611786576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b846117908161439d565b156117e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a6020908152604080832033845290915290205485111561186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d476028913960400191505060405180910390fd5b61187a8787876143cb565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602090815260408083203384529091529020546118b59086614596565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a60209081526040808320338452909152902055600193505050509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461197a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166119e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615b90602a913960400191505060405180910390fd5b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60125460ff16600114611a6757600080fd5b6000611a723061460d565b90508015611a8557611a853083836143cb565b611a8e30614657565b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615c2e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60065460ff1681565b60085474010000000000000000000000000000000000000000900460ff1615611c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615dc2602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615cf4602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615b676029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615d6f602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615eaf6028913960400191505060405180910390fd5b8751611e1a9060049060208b0190615900565b508651611e2e9060059060208a0190615900565b508551611e42906007906020890190615900565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8716179055600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560018054821686841617905560028054909116918416919091179055611edc81614662565b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f4b6146a9565b905090565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b60015460009074010000000000000000000000000000000000000000900460ff1615611ff957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f33848461479e565b60015473ffffffffffffffffffffffffffffffffffffffff163314612074576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e636022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60015460009074010000000000000000000000000000000000000000900460ff161561215457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff166121bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cd36021913960400191505060405180910390fd5b336121c68161439d565b1561221c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b836122268161439d565b1561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166122e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615afc6023913960400191505060405180910390fd5b60008411612341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615bdf6029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156123aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615e35602e913960400191505060405180910390fd5b600b546123b790866147e8565b600b556123d6866123d1876123cb8361460d565b906147e8565b614863565b6123e08186614596565b336000818152600d6020908152604091829020939093558051888152905173ffffffffffffffffffffffffffffffffffffffff8a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a360408051868152905173ffffffffffffffffffffffffffffffffffffffff8816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b60015474010000000000000000000000000000000000000000900460ff161561252257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cd36021913960400191505060405180910390fd5b336125948161439d565b156125ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b60006125f53361460d565b905060008311612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615ad36029913960400191505060405180910390fd5b828110156126a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615cad6026913960400191505060405180910390fd5b600b546126b69084614596565b600b556126c7336123d18386614596565b60408051848152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60125460ff1660021461274c57600080fd5b6127586005838361597e565b5060005b8381101561289a576003600086868481811061277457fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff168352508101919091526040016000205460ff166127fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180615a20603d913960400191505060405180910390fd5b61282d85858381811061280b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16614657565b6003600086868481811061283d57fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560010161275c565b506128a430614657565b505030600090815260036020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556012805490911690911790555050565b60015460009074010000000000000000000000000000000000000000900460ff161561297e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146129ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615c2e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314612b4157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a806028913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b60015474010000000000000000000000000000000000000000900460ff1615612cac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612cb98585858585614964565b5050505050565b60015474010000000000000000000000000000000000000000900460ff1681565b6000612cec8261460d565b92915050565b612dc28e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92508d91508c90508b8b611be3565b612dcd838383613b3c565b5050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526011602052604090205490565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b60015473ffffffffffffffffffffffffffffffffffffffff163314612e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e636022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60015474010000000000000000000000000000000000000000900460ff1615612f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b86612f978161439d565b15612fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b86612ff78161439d565b1561304d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b61305c898989898989896149a4565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff16156131ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612cb98585858585614ac5565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b60015460009074010000000000000000000000000000000000000000900460ff161561328857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f338484614d89565b60015460009074010000000000000000000000000000000000000000900460ff161561332057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b3361332a8161439d565b15613380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b8361338a8161439d565b156133e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b6133eb3386866143cb565b506001949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461347c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166134e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615cf4602f913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461360e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661367a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180615f056032913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b600e5473ffffffffffffffffffffffffffffffffffffffff16331461375f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d236024913960400191505060405180910390fd5b61378073ffffffffffffffffffffffffffffffffffffffff84168383614de5565b505050565b60015474010000000000000000000000000000000000000000900460ff161561380f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613780838383614e72565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60125462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff16156138e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b866138ec8161439d565b15613942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b8661394c8161439d565b156139a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b61305c89898989898989614f7c565b60015474010000000000000000000000000000000000000000900460ff1615613a3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613a4a8787878787878761501a565b50505050505050565b60085474010000000000000000000000000000000000000000900460ff168015613a80575060125460ff16155b613a8957600080fd5b613a956004838361597e565b50613b0a82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600181527f32000000000000000000000000000000000000000000000000000000000000006020820152915061505c9050565b600f555050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60145460ff1615613bae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f636f6e747261637420697320616c726561647920696e697469616c697a656400604482015290519081900360640190fd5b6012805473ffffffffffffffffffffffffffffffffffffffff90931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff941515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909416939093179390931691909117909155601355601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600a6020908152604080832093909416825291909152205490565b60015474010000000000000000000000000000000000000000900460ff1615613d4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613d4a8161439d565b15613da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b88613daa8161439d565b15613e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b613e118b8b8b8b8b8b8b8b8b615072565b5050505050505050505050565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601060209081526040808320938352929052205460ff1690565b60015474010000000000000000000000000000000000000000900460ff1615613f5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613f638161439d565b15613fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b88613fc38161439d565b15614019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b613e118b8b8b8b8b8b8b8b8b6150b6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146140b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661411c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615b1f6026913960400191505060405180910390fd5b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a161417a81614662565b50565b60135481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146141f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c57602c913960400191505060405180910390fd5b6141fc81614657565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85590600090a250565b6000612cec8261439d565b73ffffffffffffffffffffffffffffffffffffffff83166142b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e116024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216614323576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b456022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61417a8160006150fa565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205460ff1c60011490565b73ffffffffffffffffffffffffffffffffffffffff8316614437576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615dec6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166144a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615a5d6023913960400191505060405180910390fd5b6144ac8361460d565b811115614504576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615c086026913960400191505060405180910390fd5b61451b836123d1836145158761460d565b90614596565b61452c826123d1836123cb8661460d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561460757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff166000908152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b61417a8160016150fa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152600093611f4b93919290918301828280156147565780601f1061472b57610100808354040283529160200191614756565b820191906000526020600020905b81548152906001019060200180831161473957829003601f168201915b50505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250614799615183565b615187565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600a602090815260408083209386168352929052205461378090849084906147e390856147e8565b61424b565b60008282018381101561485c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156148dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615c83602a913960400191505060405180910390fd5b6148e58261439d565b1561493b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615bba6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902055565b612cb98585848487604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614e72565b73ffffffffffffffffffffffffffffffffffffffff86163314614a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d9d6025913960400191505060405180910390fd5b614a1e878386866151fb565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614ab0908890836152bb565b614aba8783615439565b613a4a8787876143cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821480614af35750428210155b614b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a207065726d697420697320657870697265640000604482015290519081900360640190fd5b6000614c06614b6b6146a9565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526011602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938b166060840152608083018a905260a083019390935260c08083018990528151808403909101815260e0909201905280519101206154be565b905073__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea6528783856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614c93578181015183820152602001614c7b565b50505050905090810190601f168015614cc05780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015614cdf57600080fd5b505af4158015614cf3573d6000803e3d6000fd5b505050506040513d6020811015614d0957600080fd5b5051614d7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f454950323631323a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b614d8186868661424b565b505050505050565b61378083836147e384604051806060016040528060258152602001615f816025913973ffffffffffffffffffffffffffffffffffffffff808a166000908152600a60209081526040808320938c168352929052205491906154f8565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526137809084906155a9565b614e7c8383615681565b614ef6837f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960001b8585604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405160208183030381529060405280519060200120836152bb565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260106020908152604080832086845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518492917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050565b614f88878386866151fb565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614ab0908890836152bb565b613a4a87878787868689604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614ac5565b60004661506a848483615187565b949350505050565b61305c89898989898988888b604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614f7c565b61305c89898989898988888b604051602001808481526020018381526020018260ff1660f81b815260010193505050506040516020818303038152906040526149a4565b8061510d576151088261460d565b615156565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960205260409020547f8000000000000000000000000000000000000000000000000000000000000000175b73ffffffffffffffffffffffffffffffffffffffff90921660009081526009602052604090209190915550565b4690565b8251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b814211615253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615aa8602b913960400191505060405180910390fd5b8042106152ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f5c6025913960400191505060405180910390fd5b6152b58484615681565b50505050565b73__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea652846152e76152e16146a9565b866154be565b846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561535657818101518382015260200161533e565b50505050905090810190601f1680156153835780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156153a257600080fd5b505af41580156153b6573d6000803e3d6000fd5b505050506040513d60208110156153cc57600080fd5b505161378057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260106020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600081848411156155a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561556657818101518382015260200161554e565b50505050905090810190601f1680156155935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b606061560b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661570f9092919063ffffffff16565b8051909150156137805780806020019051602081101561562a57600080fd5b5051613780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615e85602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832084845290915290205460ff161561570b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615ed7602e913960400191505060405180910390fd5b5050565b606061506a8484600085856157238561587a565b61578e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106157f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016157bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461585a576040519150601f19603f3d011682016040523d82523d6000602084013e61585f565b606091505b509150915061586f828286615880565b979650505050505050565b3b151590565b6060831561588f57508161485c565b82511561589f5782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561556657818101518382015260200161554e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061594157805160ff191683800117855561596e565b8280016001018555821561596e579182015b8281111561596e578251825591602001919060010190615953565b5061597a929150615a0a565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106159dd578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561596e565b8280016001018555821561596e579182015b8281111561596e5782358255916020019190600101906159ef565b5b8082111561597a5760008155600101615a0b56fe46696174546f6b656e56325f323a20426c61636b6c697374696e672070726576696f75736c7920756e626c61636b6c6973746564206163636f756e742145524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f74207965742076616c696446696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f2061646472657373526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737346696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c697374656446696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e56325f323a2042616c616e636520657863656564732028325e323535202d20312946696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f2061646472657373526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636546696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e56323a2063616c6c6572206d7573742062652074686520706179656546696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656446696174546f6b656e3a206e6577206f776e657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e2069732075736564206f722063616e63656c6564426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c697374656446696174546f6b656e56323a20617574686f72697a6174696f6e206973206578706972656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8b4d88b360034d7443cb7cffba3be7e0dde36f9790ca95a892e51c9e950dab964736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103a45760003560e01c806388b7ab63116101e9578063ccdb3f451161010f578063e3ee160e116100ad578063f2fde38b1161007c578063f2fde38b1461137a578063f9bf7728146113ad578063f9f92be4146113b5578063fe575a87146113e8576103a4565b8063e3ee160e14611261578063e5a6b10f146112cd578063e94a0102146112d5578063ef55bec61461130e576103a4565b8063d608ea64116100e9578063d608ea641461116d578063d76c43c6146111dd578063d91694871461121e578063dd62ed3e14611226576103a4565b8063ccdb3f4514611023578063cf0929951461102b578063d505accf1461110f576103a4565b8063a457c2d711610187578063ad38bf2211610156578063ad38bf2214610edd578063b2118a8d14610f10578063b7b7289914610f53578063bd1024301461101b576103a4565b8063a457c2d714610e05578063a9059cbb14610e3e578063aa20e1e414610e77578063aa271e1a14610eaa576103a4565b806395d89b41116101c357806395d89b4114610d155780639fd0506d14610d1d5780639fd5a6cf14610d25578063a0cc6a6814610dfd576103a4565b806388b7ab6314610bf65780638a6db9c314610cda5780638da5cb5b14610d0d576103a4565b806339509351116102ce578063554bab3c1161026c5780637ec806721161023b5780637ec8067214610a4f5780637ecebe0014610bb35780637f2eecc314610be65780638456cb5914610bee576103a4565b8063554bab3c146109935780635a049a70146109c65780635c975abb14610a1457806370a0823114610a1c576103a4565b806342966c68116102a857806342966c6814610873578063430239b4146108905780634e44d9561461095257806354fd4d501461098b576103a4565b806339509351146107f95780633f4ba83a1461083257806340c10f191461083a576103a4565b80632fc81e09116103465780633357162b116103155780633357162b146105cc57806335d99f35146107b85780633644e515146107e957806338a63183146107f1576103a4565b80632fc81e09146105405780633092afd51461057357806330adf81f146105a6578063313ce567146105ae576103a4565b806318160ddd1161038257806318160ddd1461047b5780631a8952661461049557806323b872dd146104ca5780632ab600451461050d576103a4565b806306fdde03146103a9578063095ea7b31461042657806310ae563814610473575b600080fd5b6103b161141b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103eb5781810151838201526020016103d3565b50505050905090810190601f1680156104185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61045f6004803603604081101561043c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356114c7565b604080519115158252519081900360200190f35b61045f611568565b610483611576565b60408051918252519081900360200190f35b6104c8600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661157c565b005b61045f600480360360608110156104e057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611639565b6104c86004803603602081101561052357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118f4565b6104c86004803603602081101561055657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a55565b61045f6004803603602081101561058957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611abd565b610483611bb6565b6105b6611bda565b6040805160ff9092168252519081900360200190f35b6104c860048036036101008110156105e357600080fd5b8101906020810181356401000000008111156105fe57600080fd5b82018360208201111561061057600080fd5b8035906020019184600183028401116401000000008311171561063257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561070c57600080fd5b82018360208201111561071e57600080fd5b8035906020019184600183028401116401000000008311171561074057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff16925050602081013573ffffffffffffffffffffffffffffffffffffffff90811691604081013582169160608201358116916080013516611be3565b6107c0611f25565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610483611f41565b6107c0611f50565b61045f6004803603604081101561080f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611f6c565b6104c8612004565b61045f6004803603604081101561085057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356120c7565b6104c86004803603602081101561088957600080fd5b5035612498565b6104c8600480360360408110156108a657600080fd5b8101906020810181356401000000008111156108c157600080fd5b8201836020820111156108d357600080fd5b803590602001918460208302840111640100000000831117156108f557600080fd5b91939092909160208101903564010000000081111561091357600080fd5b82018360208201111561092557600080fd5b8035906020019184600183028401116401000000008311171561094757600080fd5b50909250905061273a565b61045f6004803603604081101561096857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356128f1565b6103b1612a84565b6104c8600480360360208110156109a957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612abb565b6104c8600480360360a08110156109dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060ff6040820135169060608101359060800135612c22565b61045f612cc0565b61048360048036036020811015610a3257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ce1565b6104c86004803603610160811015610a6657600080fd5b810190602081018135640100000000811115610a8157600080fd5b820183602082011115610a9357600080fd5b80359060200191846001830284011164010000000083111715610ab557600080fd5b919390929091602081019035640100000000811115610ad357600080fd5b820183602082011115610ae557600080fd5b80359060200191846001830284011164010000000083111715610b0757600080fd5b919390929091602081019035640100000000811115610b2557600080fd5b820183602082011115610b3757600080fd5b80359060200191846001830284011164010000000083111715610b5957600080fd5b919350915060ff8135169073ffffffffffffffffffffffffffffffffffffffff602082013581169160408101358216916060820135811691608081013582169160a082013515159160c08101359091169060e00135612cf2565b61048360048036036020811015610bc957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ddd565b610483612e05565b6104c8612e29565b6104c8600480360360e0811015610c0c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c0820135640100000000811115610c6557600080fd5b820183602082011115610c7757600080fd5b80359060200191846001830284011164010000000083111715610c9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612f03945050505050565b61048360048036036020811015610cf057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613067565b6107c061308f565b6103b16130ab565b6107c0613124565b6104c8600480360360a0811015610d3b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a081016080820135640100000000811115610d8857600080fd5b820183602082011115610d9a57600080fd5b80359060200191846001830284011164010000000083111715610dbc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613140945050505050565b6104836131d7565b61045f60048036036040811015610e1b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356131fb565b61045f60048036036040811015610e5457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613293565b6104c860048036036020811015610e8d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166133f6565b61045f60048036036020811015610ec057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661355d565b6104c860048036036020811015610ef357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613588565b6104c860048036036060811015610f2657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356136ef565b6104c860048036036060811015610f6957600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591810190606081016040820135640100000000811115610fa657600080fd5b820183602082011115610fb857600080fd5b80359060200191846001830284011164010000000083111715610fda57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613785945050505050565b6107c061381a565b6107c0613836565b6104c8600480360360e081101561104157600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359160808201359160a08101359181019060e0810160c082013564010000000081111561109a57600080fd5b8201836020820111156110ac57600080fd5b803590602001918460018302840111640100000000831117156110ce57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613858945050505050565b6104c8600480360360e081101561112557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356139b1565b6104c86004803603602081101561118357600080fd5b81019060208101813564010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b509092509050613a53565b6104c8600480360360608110156111f357600080fd5b50803515159073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613b3c565b610483613c5a565b6104836004803603604081101561123c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613c7e565b6104c8600480360361012081101561127857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613cb6565b6103b1613e1e565b61045f600480360360408110156112eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135613e97565b6104c8600480360361012081101561132557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135613ecf565b6104c86004803603602081101561139057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661402a565b61048361417d565b6104c8600480360360208110156113cb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614183565b61045f600480360360208110156113fe57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16614240565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b505050505081565b60015460009074010000000000000000000000000000000000000000900460ff161561155457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f33848461424b565b50600192915050565b601254610100900460ff1681565b600b5490565b60025473ffffffffffffffffffffffffffffffffffffffff1633146115ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c57602c913960400191505060405180910390fd5b6115f581614392565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e90600090a250565b60015460009074010000000000000000000000000000000000000000900460ff16156116c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336116d08161439d565b15611726576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b846117308161439d565b15611786576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b846117908161439d565b156117e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a6020908152604080832033845290915290205485111561186f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d476028913960400191505060405180910390fd5b61187a8787876143cb565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602090815260408083203384529091529020546118b59086614596565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600a60209081526040808320338452909152902055600193505050509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461197a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166119e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615b90602a913960400191505060405180910390fd5b600e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60125460ff16600114611a6757600080fd5b6000611a723061460d565b90508015611a8557611a853083836143cb565b611a8e30614657565b5050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055565b60085460009073ffffffffffffffffffffffffffffffffffffffff163314611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615c2e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60065460ff1681565b60085474010000000000000000000000000000000000000000900460ff1615611c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615dc2602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615cf4602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615b676029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615d6f602e913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615eaf6028913960400191505060405180910390fd5b8751611e1a9060049060208b0190615900565b508651611e2e9060059060208a0190615900565b508551611e42906007906020890190615900565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff8716179055600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560018054821686841617905560028054909116918416919091179055611edc81614662565b5050600880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055505050505050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b6000611f4b6146a9565b905090565b600e5473ffffffffffffffffffffffffffffffffffffffff1690565b60015460009074010000000000000000000000000000000000000000900460ff1615611ff957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f33848461479e565b60015473ffffffffffffffffffffffffffffffffffffffff163314612074576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e636022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60015460009074010000000000000000000000000000000000000000900460ff161561215457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff166121bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cd36021913960400191505060405180910390fd5b336121c68161439d565b1561221c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b836122268161439d565b1561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166122e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615afc6023913960400191505060405180910390fd5b60008411612341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615bdf6029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156123aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615e35602e913960400191505060405180910390fd5b600b546123b790866147e8565b600b556123d6866123d1876123cb8361460d565b906147e8565b614863565b6123e08186614596565b336000818152600d6020908152604091829020939093558051888152905173ffffffffffffffffffffffffffffffffffffffff8a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a360408051868152905173ffffffffffffffffffffffffffffffffffffffff8816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b60015474010000000000000000000000000000000000000000900460ff161561252257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b336000908152600c602052604090205460ff1661258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cd36021913960400191505060405180910390fd5b336125948161439d565b156125ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b60006125f53361460d565b905060008311612650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615ad36029913960400191505060405180910390fd5b828110156126a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615cad6026913960400191505060405180910390fd5b600b546126b69084614596565b600b556126c7336123d18386614596565b60408051848152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b60125460ff1660021461274c57600080fd5b6127586005838361597e565b5060005b8381101561289a576003600086868481811061277457fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff168352508101919091526040016000205460ff166127fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180615a20603d913960400191505060405180910390fd5b61282d85858381811061280b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16614657565b6003600086868481811061283d57fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560010161275c565b506128a430614657565b505030600090815260036020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556012805490911690911790555050565b60015460009074010000000000000000000000000000000000000000900460ff161561297e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146129ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615c2e6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000818152600c6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b60408051808201909152600181527f3200000000000000000000000000000000000000000000000000000000000000602082015290565b60005473ffffffffffffffffffffffffffffffffffffffff163314612b4157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a806028913960400191505060405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b60015474010000000000000000000000000000000000000000900460ff1615612cac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612cb98585858585614964565b5050505050565b60015474010000000000000000000000000000000000000000900460ff1681565b6000612cec8261460d565b92915050565b612dc28e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92508d91508c90508b8b611be3565b612dcd838383613b3c565b5050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526011602052604090205490565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b60015473ffffffffffffffffffffffffffffffffffffffff163314612e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e636022913960400191505060405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b60015474010000000000000000000000000000000000000000900460ff1615612f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b86612f978161439d565b15612fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b86612ff78161439d565b1561304d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b61305c898989898989896149a4565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff16156131ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b612cb98585858585614ac5565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b60015460009074010000000000000000000000000000000000000000900460ff161561328857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61155f338484614d89565b60015460009074010000000000000000000000000000000000000000900460ff161561332057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b3361332a8161439d565b15613380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b8361338a8161439d565b156133e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b6133eb3386866143cb565b506001949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461347c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166134e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615cf4602f913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331461360e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661367a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180615f056032913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b600e5473ffffffffffffffffffffffffffffffffffffffff16331461375f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d236024913960400191505060405180910390fd5b61378073ffffffffffffffffffffffffffffffffffffffff84168383614de5565b505050565b60015474010000000000000000000000000000000000000000900460ff161561380f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613780838383614e72565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60125462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900460ff16156138e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b866138ec8161439d565b15613942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b8661394c8161439d565b156139a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b61305c89898989898989614f7c565b60015474010000000000000000000000000000000000000000900460ff1615613a3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b613a4a8787878787878761501a565b50505050505050565b60085474010000000000000000000000000000000000000000900460ff168015613a80575060125460ff16155b613a8957600080fd5b613a956004838361597e565b50613b0a82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600181527f32000000000000000000000000000000000000000000000000000000000000006020820152915061505c9050565b600f555050601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60145460ff1615613bae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f636f6e747261637420697320616c726561647920696e697469616c697a656400604482015290519081900360640190fd5b6012805473ffffffffffffffffffffffffffffffffffffffff90931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff941515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909416939093179390931691909117909155601355601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600a6020908152604080832093909416825291909152205490565b60015474010000000000000000000000000000000000000000900460ff1615613d4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613d4a8161439d565b15613da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b88613daa8161439d565b15613e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b613e118b8b8b8b8b8b8b8b8b615072565b5050505050505050505050565b6007805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156114bf5780601f10611494576101008083540402835291602001916114bf565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152601060209081526040808320938352929052205460ff1690565b60015474010000000000000000000000000000000000000000900460ff1615613f5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b88613f638161439d565b15613fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b88613fc38161439d565b15614019576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f376025913960400191505060405180910390fd5b613e118b8b8b8b8b8b8b8b8b6150b6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146140b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661411c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615b1f6026913960400191505060405180910390fd5b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a161417a81614662565b50565b60135481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146141f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615c57602c913960400191505060405180910390fd5b6141fc81614657565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85590600090a250565b6000612cec8261439d565b73ffffffffffffffffffffffffffffffffffffffff83166142b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e116024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216614323576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b456022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61417a8160006150fa565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205460ff1c60011490565b73ffffffffffffffffffffffffffffffffffffffff8316614437576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615dec6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166144a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615a5d6023913960400191505060405180910390fd5b6144ac8361460d565b811115614504576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615c086026913960400191505060405180910390fd5b61451b836123d1836145158761460d565b90614596565b61452c826123d1836123cb8661460d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008282111561460757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff166000908152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b61417a8160016150fa565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6004805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152600093611f4b93919290918301828280156147565780601f1061472b57610100808354040283529160200191614756565b820191906000526020600020905b81548152906001019060200180831161473957829003601f168201915b50505050506040518060400160405280600181526020017f3200000000000000000000000000000000000000000000000000000000000000815250614799615183565b615187565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600a602090815260408083209386168352929052205461378090849084906147e390856147e8565b61424b565b60008282018381101561485c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156148dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615c83602a913960400191505060405180910390fd5b6148e58261439d565b1561493b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615bba6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260096020526040902055565b612cb98585848487604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614e72565b73ffffffffffffffffffffffffffffffffffffffff86163314614a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d9d6025913960400191505060405180910390fd5b614a1e878386866151fb565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614ab0908890836152bb565b614aba8783615439565b613a4a8787876143cb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821480614af35750428210155b614b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a207065726d697420697320657870697265640000604482015290519081900360640190fd5b6000614c06614b6b6146a9565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526011602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938b166060840152608083018a905260a083019390935260c08083018990528151808403909101815260e0909201905280519101206154be565b905073__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea6528783856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614c93578181015183820152602001614c7b565b50505050905090810190601f168015614cc05780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015614cdf57600080fd5b505af4158015614cf3573d6000803e3d6000fd5b505050506040513d6020811015614d0957600080fd5b5051614d7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f454950323631323a20696e76616c6964207369676e6174757265000000000000604482015290519081900360640190fd5b614d8186868661424b565b505050505050565b61378083836147e384604051806060016040528060258152602001615f816025913973ffffffffffffffffffffffffffffffffffffffff808a166000908152600a60209081526040808320938c168352929052205491906154f8565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526137809084906155a9565b614e7c8383615681565b614ef6837f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960001b8585604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405160208183030381529060405280519060200120836152bb565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260106020908152604080832086845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518492917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050565b614f88878386866151fb565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760208083019190915273ffffffffffffffffffffffffffffffffffffffff808b1683850152891660608301526080820188905260a0820187905260c0820186905260e0808301869052835180840390910181526101009092019092528051910120614ab0908890836152bb565b613a4a87878787868689604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614ac5565b60004661506a848483615187565b949350505050565b61305c89898989898988888b604051602001808481526020018381526020018260ff1660f81b81526001019350505050604051602081830303815290604052614f7c565b61305c89898989898988888b604051602001808481526020018381526020018260ff1660f81b815260010193505050506040516020818303038152906040526149a4565b8061510d576151088261460d565b615156565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960205260409020547f8000000000000000000000000000000000000000000000000000000000000000175b73ffffffffffffffffffffffffffffffffffffffff90921660009081526009602052604090209190915550565b4690565b8251602093840120825192840192909220604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8187015280820194909452606084019190915260808301919091523060a0808401919091528151808403909101815260c09092019052805191012090565b814211615253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615aa8602b913960400191505060405180910390fd5b8042106152ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615f5c6025913960400191505060405180910390fd5b6152b58484615681565b50505050565b73__$715109b5d747ea58b675c6ea3f0dba8c60$__636ccea652846152e76152e16146a9565b866154be565b846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561535657818101518382015260200161533e565b50505050905090810190601f1680156153835780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b1580156153a257600080fd5b505af41580156153b6573d6000803e3d6000fd5b505050506040513d60208110156153cc57600080fd5b505161378057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f46696174546f6b656e56323a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260106020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600081848411156155a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561556657818101518382015260200161554e565b50505050905090810190601f1680156155935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b606061560b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661570f9092919063ffffffff16565b8051909150156137805780806020019051602081101561562a57600080fd5b5051613780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615e85602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260106020908152604080832084845290915290205460ff161561570b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615ed7602e913960400191505060405180910390fd5b5050565b606061506a8484600085856157238561587a565b61578e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106157f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016157bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461585a576040519150601f19603f3d011682016040523d82523d6000602084013e61585f565b606091505b509150915061586f828286615880565b979650505050505050565b3b151590565b6060831561588f57508161485c565b82511561589f5782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561556657818101518382015260200161554e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061594157805160ff191683800117855561596e565b8280016001018555821561596e579182015b8281111561596e578251825591602001919060010190615953565b5061597a929150615a0a565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106159dd578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561596e565b8280016001018555821561596e579182015b8281111561596e5782358255916020019190600101906159ef565b5b8082111561597a5760008155600101615a0b56fe46696174546f6b656e56325f323a20426c61636b6c697374696e672070726576696f75736c7920756e626c61636b6c6973746564206163636f756e742145524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f74207965742076616c696446696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f2061646472657373526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737346696174546f6b656e56325f323a204163636f756e7420697320626c61636b6c697374656446696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e56325f323a2042616c616e636520657863656564732028325e323535202d20312946696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f2061646472657373526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636546696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e56323a2063616c6c6572206d7573742062652074686520706179656546696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656446696174546f6b656e3a206e6577206f776e657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e2069732075736564206f722063616e63656c6564426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c697374656446696174546f6b656e56323a20617574686f72697a6174696f6e206973206578706972656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8b4d88b360034d7443cb7cffba3be7e0dde36f9790ca95a892e51c9e950dab964736f6c634300060c0033",
  "linkReferences": {
    "contracts/util/SignatureChecker.sol": {
      "SignatureChecker": [
        {
          "length": 20,
          "start": 19569
        },
        {
          "length": 20,
          "start": 21284
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/util/SignatureChecker.sol": {
      "SignatureChecker": [
        {
          "length": 20,
          "start": 19466
        },
        {
          "length": 20,
          "start": 21181
        }
      ]
    }
  }
}
