{
  "_format": "hh-sol-artifact-1",
  "contractName": "SecurityToken",
  "sourceName": "contracts/soma/SecurityTokens/SecurityToken.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ApprovalPartition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "BalanceChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Burned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DeprecatePartition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Minted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "MovedPartition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "prevPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "newPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RequiredPrivilegesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Seized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "TokensRecovered",
      "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": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "TransferPartition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_PARTITION",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_PRIVILEGES",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_DEPRECATE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_MANAGE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_MINT_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_DEPRECATE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_MANAGE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_MINT_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SOMA",
      "outputs": [
        {
          "internalType": "contract ISOMA",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_RECOVERY_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "canTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "canTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "pos",
          "type": "uint32"
        }
      ],
      "name": "checkpoints",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "fromBlock",
              "type": "uint32"
            },
            {
              "internalType": "uint224",
              "name": "balance",
              "type": "uint224"
            }
          ],
          "internalType": "struct ERC20HistoryUpgradeable.Checkpoint",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "deprecatePartition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "deprecated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getPastBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getPastTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "domain",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "numCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "recoverTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredPrivileges",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "requiredPrivileges",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "seize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "fromId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "toId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transferPartition",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "newRequiredPrivileges",
          "type": "bytes32"
        }
      ],
      "name": "updateRequiredPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "newRequiredPrivileges",
          "type": "bytes32"
        }
      ],
      "name": "updateRequiredPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf6080526001600160401b0360a052600060c0523480156200003957600080fd5b50620000446200004a565b6200010c565b600054610100900460ff1615620000b75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805160a05160c05161545d620001ac60003960008181610504015281816107c601528181610c230152818161116701526136e5015260006105b00152600081816106e201528181610b2e01528181610cf101528181610de401528181610fe20152818161107e0152818161122501528181611739015281816117d5015281816118e501528181611c4e015281816120600152613352015261545d6000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80635f3e849f116101f4578063a6487c531161011a578063d505accf116100ad578063ef63d57c1161007c578063ef63d57c14610938578063f1127ed814610959578063f25e311f14610996578063f37d11cc146109a957600080fd5b8063d505accf146108e1578063d8697598146108f4578063dd62ed3e1461091b578063eec47d601461092e57600080fd5b8063b524abcf116100e9578063b524abcf1461088c578063ba497d08146108ac578063c3f9213c146108cf578063c72460ee146108d757600080fd5b8063a6487c5314610833578063a9059cbb14610846578063aacbbf5814610859578063ac9650d81461086c57600080fd5b80637ecebe00116101925780638e539e8c116101615780638e539e8c146107f257806391d148541461080557806395d89b4114610818578063a457c2d71461082057600080fd5b80637ecebe00146107a65780638456cb59146107b957806387f67d8f146107c1578063895324b2146107e857600080fd5b806370a08231116101ce57806370a082311461074457806372cee8d51461076d578063754e940b146107805780637dfe53591461079357600080fd5b80635f3e849f146106ca57806363727fc2146106dd5780636fcfff451461071c57600080fd5b8063248a9ca3116102e457806338cd427c116102775780634d30b6be116102465780634d30b6be1461066657806357cb16731461069c5780635c975abb146106af5780635d549d5c146106b757600080fd5b806338cd427c1461062557806339509351146106385780633f4ba83a1461064b5780634b63885a1461065357600080fd5b806330139280116102b357806330139280146105d2578063313ce567146105f9578063330dfd1f146106085780633644e5151461061d57600080fd5b8063248a9ca3146105725780632772ce9d1461058557806328972b15146105985780632a7a0c68146105ab57600080fd5b806310fe82941161035c5780631c8d5d381161032b5780631c8d5d38146104c25780631e26571f14610502578063227102a61461053857806323b872dd1461055f57600080fd5b806310fe829414610476578063161bc4201461048957806318160ddd146104b057806318cb0a40146104b857600080fd5b8063095ea7b311610398578063095ea7b31461041f5780630df86999146104325780630f58f5101461044557806310b74b281461044f57600080fd5b806301ffc9a7146103bf57806306fdde03146103e7578063089566a5146103fc575b600080fd5b6103d26103cd366004614925565b6109bc565b60405190151581526020015b60405180910390f35b6103ef6109e7565b6040516103de919061499f565b61041160008051602061540a83398151915281565b6040519081526020016103de565b6103d261042d3660046149c7565b610a79565b6104116104403660046149c7565b610a91565b6104116102945481565b6104117f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d81565b6103d2610484366004614a96565b610ae5565b6104117fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b81565b603554610411565b6104116103935481565b6104116104d0366004614af9565b6001600160a01b0392831660009081526069602090815260408083209490951682529283528381209181529152205490565b7f000000000000000000000000000000000000000000000000000000000000000060009081526102fb6020526040902054610411565b6104117ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b6103d261056d366004614af9565b610b06565b610411610580366004614b3a565b610b2a565b6103d2610593366004614b3a565b610c1c565b6103d26105a6366004614b53565b610c48565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104117fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b604051601281526020016103de565b61061b610616366004614bc9565b610c73565b005b610411610dd5565b6103d2610633366004614c19565b610ddf565b6103d26106463660046149c7565b610faf565b61061b610fd1565b6103d2610661366004614c6a565b611160565b6104116106743660046149c7565b6001600160a01b03919091166000908152606860209081526040808320938352929052205490565b6103d26106aa366004614a96565b61118c565b6103d261119d565b61061b6106c5366004614bc9565b6111a7565b61061b6106d8366004614af9565b6112fa565b6107047f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103de565b61072f61072a366004614c6a565b61146b565b60405163ffffffff90911681526020016103de565b610411610752366004614c6a565b6001600160a01b031660009081526033602052604090205490565b6103d261077b366004614c87565b61148e565b6103d261078e366004614cdb565b61159e565b61061b6107a1366004614cfd565b611663565b6104116107b4366004614c6a565b611709565b61061b611728565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104116102c75481565b610411610800366004614b3a565b6118b4565b6103d2610813366004614d44565b6118e1565b6103ef6119d9565b6103d261082e3660046149c7565b6119e8565b61061b610841366004614d74565b611a63565b6103d26108543660046149c7565b611b9a565b61061b610867366004614c87565b611ba8565b61087f61087a366004614df2565b611d53565b6040516103de9190614e67565b61041161089a366004614b3a565b60009081526066602052604090205490565b6103d26108ba366004614b3a565b60009081526067602052604090205460ff1690565b610411600081565b6104116102605481565b61061b6108ef366004614ec9565b611e48565b6104117f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd81565b610411610929366004614f40565b611fac565b6104116102fa5481565b610411610946366004614b3a565b60009081526102fb602052604090205490565b61096c610967366004614f6e565b611fd7565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016103de565b6103d26109a4366004614d44565b61205c565b6103d26109b7366004614af9565b612137565b60006001600160e01b0319821663a6487c5360e01b14806109e157506109e18261214e565b92915050565b6060603680546109f690614fa5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2290614fa5565b8015610a6f5780601f10610a4457610100808354040283529160200191610a6f565b820191906000526020600020905b815481529060010190602001808311610a5257829003601f168201915b5050505050905090565b600033610a87818585612173565b5060019392505050565b6000438210610abb5760405162461bcd60e51b8152600401610ab290614fd9565b60405180910390fd5b6001600160a01b038316600090815261010060205260409020610ade9083612297565b9392505050565b600033610af58187878787612354565b50600195945050505050565b905090565b600033610b148582856124a2565b610b1f858585612516565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae919061501a565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b8152600401610bdb91815260200190565b602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e19190615037565b60006109e17f00000000000000000000000000000000000000000000000000000000000000008361159e565b600033610c588782878787612521565b610c668787878888886125a2565b5060019695505050505050565b610393543390610c8390826118e1565b80610ca15750610ca160008051602061540a833981519152826118e1565b610ced5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663921234706040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d71919061501a565b9050610d7f81868686612630565b6001600160a01b038116336001600160a01b03167fd0f462e38655140024816d081b599b90e6e95e69b564ac32b0c2c0244393ca84878787604051610dc693929190615050565b60405180910390a35050505050565b6000610b0161263c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061501a565b60008681526102fb6020526040812054919250858714610e935760008681526102fb6020526040902054610e95565b815b90506001600160a01b0389161580610f19575060405163253bd7b760e01b81526001600160a01b038a811660048301526024820184905284169063253bd7b790604401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061506f565b8015610fa257506001600160a01b0388161580610fa2575060405163253bd7b760e01b81526001600160a01b0389811660048301526024820183905284169063253bd7b790604401602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa2919061506f565b9998505050505050505050565b600033610a87818585610fc28383611fac565b610fcc91906150a7565b612173565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611062919061501a565b6001600160a01b031614806111095750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe919061501a565b6001600160a01b0316145b6111555760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610ab2565b61115d6126b9565b50565b60006109e17f00000000000000000000000000000000000000000000000000000000000000008361205c565b600033610af58187878088886125a2565b6000610b0161270b565b6103935433906111b790826118e1565b806111d557506111d560008051602061540a833981519152826118e1565b6112215760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663921234706040518163ffffffff1660e01b8152600401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061501a565b90506112b381868686612715565b6001600160a01b038116336001600160a01b03167fbb647b33f4e81f826db7a86f0f82f892f5faaba1e9c8bc300ce7f86019631e27878787604051610dc693929190615050565b7f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd61132581336118e1565b6113a15760405162461bcd60e51b815260206004820152604160248201527f536f6d61416363657373436f6e74726f6c3a2063616c6c657220646f6573206e60448201527f6f7420686176652074686520617070726f70726961746520617574686f7269746064820152607960f81b608482015260a401610ab2565b6113ad6103c685612721565b156113fa5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e5265636f766572793a20494e56414c49445f544f4b454e000000006044820152606401610ab2565b61140e6001600160a01b0385168484612743565b336001600160a01b0316836001600160a01b0316856001600160a01b03167fca574176b1d34032f40f7fb0c519eae468b4535ebf7b27f986a7b6e2fa53d5388560405161145d91815260200190565b60405180910390a450505050565b6001600160a01b038116600090815261010060205260408120546109e190612795565b6000803390506114a16102c754826118e1565b806114d157506114d17f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d826118e1565b61151d5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572506172746974696f6e733a20554e415554484f52495a45446044820152606401610ab2565b61154a878888886115438c6001600160a01b031660009081526033602052604090205490565b89896127fe565b866001600160a01b03167f88f3ad0eefdad65d8f1bfc7b59905c0ecd55e3b940f32b25fb7f8202adc06b5d8787878760405161158994939291906150ba565b60405180910390a25060019695505050505050565b60006115ae6102fa546108133390565b806115de57506115de7ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1336118e1565b6116505760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f207468697300000000000000006064820152608401610ab2565b61165a83836129ec565b50600192915050565b61029454339061167390826118e1565b806116a357506116a37fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b826118e1565b6116fa5760405162461bcd60e51b815260206004820152602260248201527f446570726563617461626c6553656375726974793a20554e415554484f52495a604482015261115160f21b6064820152608401610ab2565b6117048383612a51565b505050565b6001600160a01b038116600090815261016560205260408120546109e1565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b9919061501a565b6001600160a01b031614806118605750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611855919061501a565b6001600160a01b0316145b6118ac5760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610ab2565b61115d612b7e565b60004382106118d55760405162461bcd60e51b8152600401610ab290614fd9565b6109e161010183612297565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611965919061501a565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d14854906044015b602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade919061506f565b6060603780546109f690614fa5565b600033816119f68286611fac565b905083811015611a565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ab2565b610b1f8286868403612173565b600054610100900460ff1615808015611a835750600054600160ff909116105b80611a9d5750303b158015611a9d575060005460ff166001145b611b005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab2565b6000805460ff191660011790558015611b23576000805461ff0019166101001790555b611b2e848484612bbb565b611b36612c80565b604080516000815260208101909152611b4e90612ce6565b8015611b94576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600033610a87818585612516565b610261805460ff191660011790556000611bbf3390565b9050611bce61026054826118e1565b80611bfe5750611bfe7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9826118e1565b611c4a5760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cce919061501a565b9050611cde878288888888612d5c565b806001600160a01b0316876001600160a01b0316611cf93390565b6001600160a01b03167ff09e33fbd8c0db0d38f29395929f555ae5e74f451ee3875b4b871a14c910da7589898989604051611d3794939291906150ba565b60405180910390a45050610261805460ff191690555050505050565b60608167ffffffffffffffff811115611d6e57611d6e6149f3565b604051908082528060200260200182016040528015611da157816020015b6060815260200190600190039081611d8c5790505b50905060005b82811015611e4157611e1130858584818110611dc557611dc56150e9565b9050602002810190611dd791906150ff565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d6a92505050565b828281518110611e2357611e236150e9565b60200260200101819052508080611e399061514d565b915050611da7565b5092915050565b83421115611e985760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610ab2565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611ec78c612e5e565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611f2282612e87565b90506000611f3282878787612ed5565b9050896001600160a01b0316816001600160a01b031614611f955760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610ab2565b611fa08a8a8a612173565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b038316600090815261010060205260409020805463ffffffff841690811061201c5761201c6150e9565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e0919061501a565b6001600160a01b031663253bd7b7836121068660009081526102fb602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401611998565b60006121468484838086610ddf565b949350505050565b60006001600160e01b03198216638757f10760e01b14806109e157506109e182612efd565b6001600160a01b0383166121d55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab2565b6001600160a01b0382166122365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab2565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8154600090815b818110156122fb5760006122b28284612f22565b9050848682815481106122c7576122c76150e9565b60009182526020909120015463ffffffff1611156122e7578092506122f5565b6122f28160016150a7565b91505b5061229e565b811561233f578461230d600184615166565b8154811061231d5761231d6150e9565b60009182526020909120015464010000000090046001600160e01b0316612342565b60005b6001600160e01b031695945050505050565b6001600160a01b0385166123c05760405162461bcd60e51b815260206004820152602d60248201527f4552433230506172746974696f6e3a20617070726f76652066726f6d2074686560448201526c207a65726f206164647265737360981b6064820152608401610ab2565b6001600160a01b03841661242a5760405162461bcd60e51b815260206004820152602b60248201527f4552433230506172746974696f6e3a20617070726f766520746f20746865207a60448201526a65726f206164647265737360a81b6064820152608401610ab2565b6001600160a01b0380861660008181526069602090815260408083209489168084529482528083208884529091529081902085905551859291907fc7c99c94b6f2aa290d29935e03ed0355e55c0f0d30602ed539bc5dba9d8a1b16906124939087908790615179565b60405180910390a45050505050565b60006124ae8484611fac565b90506000198114611b9457818110156125095760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ab2565b611b948484848403612173565b611704838383612f3d565b6001600160a01b0385811660009081526069602090815260408083209388168352928152828220868352905220546001810161255d575061259b565b8281106125785761257386868686850386612354565b612599565b801561258c5761258c868686600086612354565b61259986868386036124a2565b505b5050505050565b6001600160a01b0386166125c85760405162461bcd60e51b8152600401610ab290615192565b6001600160a01b0385166125ee5760405162461bcd60e51b8152600401610ab2906151e0565b6001600160a01b038616600090815260686020908152604080832087845290915290205461262590879087908790879087876127fe565b612599868684613116565b611b94848484846132f5565b6000610b017f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61266c6101315490565b610132546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6126c1613301565b609c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610b0161334e565b611b94848484846133e2565b6001600160a01b03811660009081526001830160205260408120541515610ade565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526117049084906133ee565b600063ffffffff8211156127fa5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610ab2565b5090565b831580159061281b575060008481526067602052604090205460ff165b1561282557600093505b8183101561288c5760405162461bcd60e51b815260206004820152602e60248201527f4552433230506172746974696f6e3a20696e73756666696369656e742070617260448201526d746974696f6e2062616c616e636560901b6064820152608401610ab2565b61289a8787878786866134c0565b6001600160a01b0380881660009081526068602081815260408084208a855282528084208789039055938a16835290815282822087835290522080548301905582821480156128e857508415155b15612911576001600160a01b038716600090815260656020526040902061290f90866134ce565b505b831561293b576001600160a01b038616600090815260656020526040902061293990856134da565b505b838514612985576000858152606660205260408082208054858103918290558784529190922080548501905590612983576000868152606760205260409020805460ff191690555b505b84866001600160a01b0316886001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce668786866040516129cd93929190615050565b60405180910390a46129e3878787878686612599565b50505050505050565b60008281526102fb602090815260409182902054825185815291820152808201839052905133917f357b76e19994be5e285596f48ee3be9e0cfb1c191d59c3196fcbf73f1995ac7e919081900360600190a260009182526102fb602052604090912055565b60008281526067602052604090205460ff1615612abb5760405162461bcd60e51b815260206004820152602260248201527f4552433230506172746974696f6e3a20616c7265616479206465707265636174604482015261195960f21b6064820152608401610ab2565b81612b275760405162461bcd60e51b815260206004820152603660248201527f4552433230506172746974696f6e3a2063616e6e6f7420646570726563617465604482015275103a3432903232b330bab63a103830b93a34ba34b7b760511b6064820152608401610ab2565b60008281526067602052604090819020805460ff191660011790555182907f179aecdd956102143904725ae8b4e1ee45cd4ae35755c05be2a6dd18b565216190612b7290849061499f565b60405180910390a25050565b612b866134e6565b609c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126ee3390565b600054610100900460ff16612be25760405162461bcd60e51b8152600401610ab29061522c565b612bea61352e565b612bf261352e565b612bfa613555565b612c0261352e565b612c2583604051806040016040528060018152602001603160f81b815250613588565b612c2e836135cb565b612c3661352e565b612c3e6135f2565b612c4661352e565b612c4e61352e565b612c5661352e565b612c5e61366a565b612c6661352e565b612c70828261370c565b612c7861374c565b6117046137c4565b600054610100900460ff16612ca75760405162461bcd60e51b8152600401610ab29061522c565b3060008051602061540a833981519152604051602001612cc8929190615277565b60408051601f19818403018152919052805160209091012061039355565b600054610100900460ff16612d0d5760405162461bcd60e51b8152600401610ab29061522c565b60005b8151811015612d5857612d47828281518110612d2e57612d2e6150e9565b60200260200101516103c661383c90919063ffffffff16565b50612d518161514d565b9050612d10565b5050565b6125998686868686866125a2565b60606001600160a01b0383163b612dd25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610ab2565b600080846001600160a01b031684604051612ded9190615299565b600060405180830381855af49150503d8060008114612e28576040519150601f19603f3d011682016040523d82523d6000602084013e612e2d565b606091505b5091509150612e55828260405180606001604052806027815260200161542a60279139613851565b95945050505050565b6001600160a01b0381166000908152610165602052604090208054600181018255905b50919050565b60006109e1612e9461263c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612ee68787878761388a565b91509150612ef381613977565b5095945050505050565b60006001600160e01b03198216636e59604360e01b14806109e157506109e182613b2d565b6000612f3160028484186152b5565b610ade908484166150a7565b6001600160a01b038316612f635760405162461bcd60e51b8152600401610ab290615192565b6001600160a01b038216612f895760405162461bcd60e51b8152600401610ab2906151e0565b6001600160a01b03831660009081526065602090815260408083206068835281842084805290925282205490918391908115612ff557612fc98284613b6d565b9050612fef87876000801b6000801b8686604051806020016040528060008152506127fe565b80830392505b821561310f57600061300685613b7c565b905060005b818110156130a457600061301f8783613b86565b6001600160a01b038b1660009081526068602090815260408083208484529091528120549650909150859003613055575061300b565b61305f8587613b6d565b935083860395506130848a8a83848989604051806020016040528060008152506127fe565b838503613097576000199092019161309e565b6001909101905b5061300b565b6000851161310c5760405162461bcd60e51b815260206004820152602f60248201527f4552433230506172746974696f6e3a207472616e7366657220616d6f756e742060448201526e657863656564732062616c616e636560881b6064820152608401610ab2565b50505b6129e38787875b6001600160a01b03831661317a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab2565b6001600160a01b0382166131dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab2565b6131e7838383613b92565b6001600160a01b0383166000908152603360205260409020548181101561325f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab2565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906132969084906150a7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e291815260200190565b60405180910390a3611b94848484613b9d565b611b9484848484613ba8565b61330961119d565b61334c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610ab2565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061506f565b80610b01575050609c5460ff1690565b611b9484848484613d8d565b6000613443826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ee39092919063ffffffff16565b8051909150156117045780806020019051810190613461919061506f565b6117045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ab2565b612599868686868686613ef2565b6000610ade8383613f65565b6000610ade8383614058565b6134ee61119d565b1561334c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610ab2565b600054610100900460ff1661334c5760405162461bcd60e51b8152600401610ab29061522c565b600054610100900460ff1661357c5760405162461bcd60e51b8152600401610ab29061522c565b609c805460ff19169055565b600054610100900460ff166135af5760405162461bcd60e51b8152600401610ab29061522c565b8151602092830120815191909201206101319190915561013255565b600054610100900460ff1661115d5760405162461bcd60e51b8152600401610ab29061522c565b600054610100900460ff166136195760405162461bcd60e51b8152600401610ab29061522c565b307fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef960405160200161364c929190615277565b60408051601f19818403018152919052805160209091012061026055565b600054610100900460ff166136915760405162461bcd60e51b8152600401610ab29061522c565b307ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb16040516020016136c4929190615277565b60408051601f1981840301815291905280516020909101206102fa5561334c7f00000000000000000000000000000000000000000000000000000000000000006000196129ec565b600054610100900460ff166137335760405162461bcd60e51b8152600401610ab29061522c565b603661373f838261531d565b506037611704828261531d565b600054610100900460ff166137735760405162461bcd60e51b8152600401610ab29061522c565b307fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b6040516020016137a6929190615277565b60408051601f19818403018152919052805160209091012061029455565b600054610100900460ff166137eb5760405162461bcd60e51b8152600401610ab29061522c565b307f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d60405160200161381e929190615277565b60408051601f1981840301815291905280516020909101206102c755565b6000610ade836001600160a01b038416614058565b60608315613860575081610ade565b8251156138705782518084602001fd5b8160405162461bcd60e51b8152600401610ab2919061499f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156138c1575060009050600361396e565b8460ff16601b141580156138d957508460ff16601c14155b156138ea575060009050600461396e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561393e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166139675760006001925092505061396e565b9150600090505b94509492505050565b600081600481111561398b5761398b6153dd565b036139935750565b60018160048111156139a7576139a76153dd565b036139f45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab2565b6002816004811115613a0857613a086153dd565b03613a555760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab2565b6003816004811115613a6957613a696153dd565b03613ac15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab2565b6004816004811115613ad557613ad56153dd565b0361115d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab2565b60006001600160e01b031982166336372b0760e01b1480613b5e57506001600160e01b03198216634ec7fbed60e11b145b806109e157506109e1826140a7565b6000818311612e815782610ade565b60006109e1825490565b6000610ade83836140cc565b6117048383836140f6565b61170483838361415e565b6001600160a01b038416613c115760405162461bcd60e51b815260206004820152602a60248201527f4552433230506172746974696f6e3a206275726e2066726f6d20746865207a65604482015269726f206164647265737360b01b6064820152608401610ab2565b613c20846000858686866134c0565b6001600160a01b038416600090815260686020908152604080832086845290915290205482811015613ca85760405162461bcd60e51b815260206004820152602b60248201527f4552433230506172746974696f6e3a206275726e20616d6f756e74206578636560448201526a6564732062616c616e636560a81b6064820152608401610ab2565b6001600160a01b038516600090815260686020908152604080832087845282528083208685039055606690915281208054859290613ce7908490615166565b90915550508315801590613cfa57508083145b15613d23576001600160a01b0385166000908152606560205260409020613d2190856134ce565b505b8360006001600160a01b0316866001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce66878787604051613d6c93929190615050565b60405180910390a4613d7e8584614169565b61259b85600086878787612599565b6001600160a01b038416613df45760405162461bcd60e51b815260206004820152602860248201527f4552433230506172746974696f6e3a206d696e7420746f20746865207a65726f604482015267206164647265737360c01b6064820152608401610ab2565b613e03600085858686866134c0565b60008381526066602052604081208054849290613e219084906150a7565b90915550506001600160a01b038416600090815260686020908152604080832086845290915290208054830190558215613e79576001600160a01b0384166000908152606560205260409020613e7790846134da565b505b82846001600160a01b031660006001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce66868686604051613ec293929190615050565b60405180910390a4613ed484836142ca565b611b9460008585868686612599565b606061214684846000856143bd565b613f00868686868686612599565b613f086144ee565b61259957613f198686868686610ddf565b6125995760405162461bcd60e51b815260206004820152601e60248201527f455243323047756172643a204d495353494e475f50524956494c4547455300006044820152606401610ab2565b6000818152600183016020526040812054801561404e576000613f89600183615166565b8554909150600090613f9d90600190615166565b9050818114614002576000866000018281548110613fbd57613fbd6150e9565b9060005260206000200154905080876000018481548110613fe057613fe06150e9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614013576140136153f3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109e1565b60009150506109e1565b600081815260018301602052604081205461409f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109e1565b5060006109e1565b60006001600160e01b03198216630cbb053b60e41b14806109e157506109e182614508565b60008260000182815481106140e3576140e36150e9565b9060005260206000200154905092915050565b6140fe61119d565b156117045760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610ab2565b61170483838361452d565b6001600160a01b0382166141c95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ab2565b6141d582600083613b92565b6001600160a01b038216600090815260336020526040902054818110156142495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ab2565b6001600160a01b0383166000908152603360205260408120838303905560358054849290614278908490615166565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361170483600084613b9d565b6001600160a01b0382166143205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ab2565b61432c60008383613b92565b806035600082825461433e91906150a7565b90915550506001600160a01b0382166000908152603360205260408120805483929061436b9084906150a7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612d5860008383613b9d565b60608247101561441e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ab2565b6001600160a01b0385163b6144755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ab2565b600080866001600160a01b031685876040516144919190615299565b60006040518083038185875af1925050503d80600081146144ce576040519150601f19603f3d011682016040523d82523d6000602084013e6144d3565b606091505b50915091506144e3828286613851565b979650505050505050565b6102615460009060ff166145025750600090565b50600190565b60006001600160e01b031982166301a4461b60e41b14806109e157506109e18261466c565b816001600160a01b0316836001600160a01b03161415801561454f5750600081115b15611704576001600160a01b038316156145de576001600160a01b038316600090815261010060205260408120819061458b906146918561469d565b91509150846001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c383836040516145d3929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611704576001600160a01b0382166000908152610100602052604081208190614615906148168561469d565b91509150836001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c3838360405161465d929190918252602082015260400190565b60405180910390a25050505050565b60006001600160e01b031982166372cee8d560e01b14806109e157506109e182614822565b6000610ade8284615166565b8254600090819080156146e857856146b6600183615166565b815481106146c6576146c66150e9565b60009182526020909120015464010000000090046001600160e01b03166146eb565b60005b6001600160e01b0316925061470483858763ffffffff16565b91506000811180156147425750438661471e600184615166565b8154811061472e5761472e6150e9565b60009182526020909120015463ffffffff16145b156147a25761475082614847565b8661475c600184615166565b8154811061476c5761476c6150e9565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061480d565b8560405180604001604052806147b743612795565b63ffffffff1681526020016147cb85614847565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6000610ade82846150a7565b60006001600160e01b03198216637dfe535960e01b14806109e157506109e1826148b0565b60006001600160e01b038211156127fa5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610ab2565b60006001600160e01b0319821663155977eb60e31b14806109e157506109e18260006001600160e01b0319821663b55bd4f760e01b14806109e157506109e18260006001600160e01b0319821663d86f1ca160e01b14806109e157506301ffc9a760e01b6001600160e01b03198316146109e1565b60006020828403121561493757600080fd5b81356001600160e01b031981168114610ade57600080fd5b60005b8381101561496a578181015183820152602001614952565b50506000910152565b6000815180845261498b81602086016020860161494f565b601f01601f19169290920160200192915050565b602081526000610ade6020830184614973565b6001600160a01b038116811461115d57600080fd5b600080604083850312156149da57600080fd5b82356149e5816149b2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614a1a57600080fd5b813567ffffffffffffffff80821115614a3557614a356149f3565b604051601f8301601f19908116603f01168101908282118183101715614a5d57614a5d6149f3565b81604052838152866020858801011115614a7657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215614aac57600080fd5b8435614ab7816149b2565b93506020850135925060408501359150606085013567ffffffffffffffff811115614ae157600080fd5b614aed87828801614a09565b91505092959194509250565b600080600060608486031215614b0e57600080fd5b8335614b19816149b2565b92506020840135614b29816149b2565b929592945050506040919091013590565b600060208284031215614b4c57600080fd5b5035919050565b600080600080600060a08688031215614b6b57600080fd5b8535614b76816149b2565b94506020860135614b86816149b2565b93506040860135925060608601359150608086013567ffffffffffffffff811115614bb057600080fd5b614bbc88828901614a09565b9150509295509295909350565b600080600060608486031215614bde57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614c0357600080fd5b614c0f86828701614a09565b9150509250925092565b600080600080600060a08688031215614c3157600080fd5b8535614c3c816149b2565b94506020860135614c4c816149b2565b94979496505050506040830135926060810135926080909101359150565b600060208284031215614c7c57600080fd5b8135610ade816149b2565b600080600080600060a08688031215614c9f57600080fd5b8535614caa816149b2565b9450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115614bb057600080fd5b60008060408385031215614cee57600080fd5b50508035926020909101359150565b60008060408385031215614d1057600080fd5b82359150602083013567ffffffffffffffff811115614d2e57600080fd5b614d3a85828601614a09565b9150509250929050565b60008060408385031215614d5757600080fd5b823591506020830135614d69816149b2565b809150509250929050565b600080600060608486031215614d8957600080fd5b833567ffffffffffffffff80821115614da157600080fd5b614dad87838801614a09565b94506020860135915080821115614dc357600080fd5b614dcf87838801614a09565b93506040860135915080821115614de557600080fd5b50614c0f86828701614a09565b60008060208385031215614e0557600080fd5b823567ffffffffffffffff80821115614e1d57600080fd5b818501915085601f830112614e3157600080fd5b813581811115614e4057600080fd5b8660208260051b8501011115614e5557600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614ebc57603f19888603018452614eaa858351614973565b94509285019290850190600101614e8e565b5092979650505050505050565b600080600080600080600060e0888a031215614ee457600080fd5b8735614eef816149b2565b96506020880135614eff816149b2565b95506040880135945060608801359350608088013560ff81168114614f2357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614f5357600080fd5b8235614f5e816149b2565b91506020830135614d69816149b2565b60008060408385031215614f8157600080fd5b8235614f8c816149b2565b9150602083013563ffffffff81168114614d6957600080fd5b600181811c90821680614fb957607f821691505b602082108103612e8157634e487b7160e01b600052602260045260246000fd5b60208082526021908201527f4552433230486973746f72793a20626c6f636b206e6f7420796574206d696e656040820152601960fa1b606082015260800190565b60006020828403121561502c57600080fd5b8151610ade816149b2565b60006020828403121561504957600080fd5b5051919050565b838152826020820152606060408201526000612e556060830184614973565b60006020828403121561508157600080fd5b81518015158114610ade57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109e1576109e1615091565b8481528360208201528260408201526080606082015260006150df6080830184614973565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261511657600080fd5b83018035915067ffffffffffffffff82111561513157600080fd5b60200191503681900382131561514657600080fd5b9250929050565b60006001820161515f5761515f615091565b5060010190565b818103818111156109e1576109e1615091565b8281526040602082015260006121466040830184614973565b6020808252602e908201527f4552433230506172746974696f6e3a207472616e736665722066726f6d20746860408201526d65207a65726f206164647265737360901b606082015260800190565b6020808252602c908201527f4552433230506172746974696f6e3a207472616e7366657220746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60609290921b6bffffffffffffffffffffffff19168252601482015260340190565b600082516152ab81846020870161494f565b9190910192915050565b6000826152d257634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561170457600081815260208120601f850160051c810160208610156152fe5750805b601f850160051c820191505b818110156125995782815560010161530a565b815167ffffffffffffffff811115615337576153376149f3565b61534b816153458454614fa5565b846152d7565b602080601f83116001811461538057600084156153685750858301515b600019600386901b1c1916600185901b178555612599565b600085815260208120601f198616915b828110156153af57888601518255948401946001909101908401615390565b50858210156153cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe8f5f8e26482c221a9e0a6de08669f3a760bcf2c5341c517df908a3e2bde0e36d416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80635f3e849f116101f4578063a6487c531161011a578063d505accf116100ad578063ef63d57c1161007c578063ef63d57c14610938578063f1127ed814610959578063f25e311f14610996578063f37d11cc146109a957600080fd5b8063d505accf146108e1578063d8697598146108f4578063dd62ed3e1461091b578063eec47d601461092e57600080fd5b8063b524abcf116100e9578063b524abcf1461088c578063ba497d08146108ac578063c3f9213c146108cf578063c72460ee146108d757600080fd5b8063a6487c5314610833578063a9059cbb14610846578063aacbbf5814610859578063ac9650d81461086c57600080fd5b80637ecebe00116101925780638e539e8c116101615780638e539e8c146107f257806391d148541461080557806395d89b4114610818578063a457c2d71461082057600080fd5b80637ecebe00146107a65780638456cb59146107b957806387f67d8f146107c1578063895324b2146107e857600080fd5b806370a08231116101ce57806370a082311461074457806372cee8d51461076d578063754e940b146107805780637dfe53591461079357600080fd5b80635f3e849f146106ca57806363727fc2146106dd5780636fcfff451461071c57600080fd5b8063248a9ca3116102e457806338cd427c116102775780634d30b6be116102465780634d30b6be1461066657806357cb16731461069c5780635c975abb146106af5780635d549d5c146106b757600080fd5b806338cd427c1461062557806339509351146106385780633f4ba83a1461064b5780634b63885a1461065357600080fd5b806330139280116102b357806330139280146105d2578063313ce567146105f9578063330dfd1f146106085780633644e5151461061d57600080fd5b8063248a9ca3146105725780632772ce9d1461058557806328972b15146105985780632a7a0c68146105ab57600080fd5b806310fe82941161035c5780631c8d5d381161032b5780631c8d5d38146104c25780631e26571f14610502578063227102a61461053857806323b872dd1461055f57600080fd5b806310fe829414610476578063161bc4201461048957806318160ddd146104b057806318cb0a40146104b857600080fd5b8063095ea7b311610398578063095ea7b31461041f5780630df86999146104325780630f58f5101461044557806310b74b281461044f57600080fd5b806301ffc9a7146103bf57806306fdde03146103e7578063089566a5146103fc575b600080fd5b6103d26103cd366004614925565b6109bc565b60405190151581526020015b60405180910390f35b6103ef6109e7565b6040516103de919061499f565b61041160008051602061540a83398151915281565b6040519081526020016103de565b6103d261042d3660046149c7565b610a79565b6104116104403660046149c7565b610a91565b6104116102945481565b6104117f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d81565b6103d2610484366004614a96565b610ae5565b6104117fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b81565b603554610411565b6104116103935481565b6104116104d0366004614af9565b6001600160a01b0392831660009081526069602090815260408083209490951682529283528381209181529152205490565b7f000000000000000000000000000000000000000000000000000000000000000060009081526102fb6020526040902054610411565b6104117ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b6103d261056d366004614af9565b610b06565b610411610580366004614b3a565b610b2a565b6103d2610593366004614b3a565b610c1c565b6103d26105a6366004614b53565b610c48565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104117fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b604051601281526020016103de565b61061b610616366004614bc9565b610c73565b005b610411610dd5565b6103d2610633366004614c19565b610ddf565b6103d26106463660046149c7565b610faf565b61061b610fd1565b6103d2610661366004614c6a565b611160565b6104116106743660046149c7565b6001600160a01b03919091166000908152606860209081526040808320938352929052205490565b6103d26106aa366004614a96565b61118c565b6103d261119d565b61061b6106c5366004614bc9565b6111a7565b61061b6106d8366004614af9565b6112fa565b6107047f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103de565b61072f61072a366004614c6a565b61146b565b60405163ffffffff90911681526020016103de565b610411610752366004614c6a565b6001600160a01b031660009081526033602052604090205490565b6103d261077b366004614c87565b61148e565b6103d261078e366004614cdb565b61159e565b61061b6107a1366004614cfd565b611663565b6104116107b4366004614c6a565b611709565b61061b611728565b6104117f000000000000000000000000000000000000000000000000000000000000000081565b6104116102c75481565b610411610800366004614b3a565b6118b4565b6103d2610813366004614d44565b6118e1565b6103ef6119d9565b6103d261082e3660046149c7565b6119e8565b61061b610841366004614d74565b611a63565b6103d26108543660046149c7565b611b9a565b61061b610867366004614c87565b611ba8565b61087f61087a366004614df2565b611d53565b6040516103de9190614e67565b61041161089a366004614b3a565b60009081526066602052604090205490565b6103d26108ba366004614b3a565b60009081526067602052604090205460ff1690565b610411600081565b6104116102605481565b61061b6108ef366004614ec9565b611e48565b6104117f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd81565b610411610929366004614f40565b611fac565b6104116102fa5481565b610411610946366004614b3a565b60009081526102fb602052604090205490565b61096c610967366004614f6e565b611fd7565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016103de565b6103d26109a4366004614d44565b61205c565b6103d26109b7366004614af9565b612137565b60006001600160e01b0319821663a6487c5360e01b14806109e157506109e18261214e565b92915050565b6060603680546109f690614fa5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2290614fa5565b8015610a6f5780601f10610a4457610100808354040283529160200191610a6f565b820191906000526020600020905b815481529060010190602001808311610a5257829003601f168201915b5050505050905090565b600033610a87818585612173565b5060019392505050565b6000438210610abb5760405162461bcd60e51b8152600401610ab290614fd9565b60405180910390fd5b6001600160a01b038316600090815261010060205260409020610ade9083612297565b9392505050565b600033610af58187878787612354565b50600195945050505050565b905090565b600033610b148582856124a2565b610b1f858585612516565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae919061501a565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b8152600401610bdb91815260200190565b602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e19190615037565b60006109e17f00000000000000000000000000000000000000000000000000000000000000008361159e565b600033610c588782878787612521565b610c668787878888886125a2565b5060019695505050505050565b610393543390610c8390826118e1565b80610ca15750610ca160008051602061540a833981519152826118e1565b610ced5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663921234706040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d71919061501a565b9050610d7f81868686612630565b6001600160a01b038116336001600160a01b03167fd0f462e38655140024816d081b599b90e6e95e69b564ac32b0c2c0244393ca84878787604051610dc693929190615050565b60405180910390a35050505050565b6000610b0161263c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061501a565b60008681526102fb6020526040812054919250858714610e935760008681526102fb6020526040902054610e95565b815b90506001600160a01b0389161580610f19575060405163253bd7b760e01b81526001600160a01b038a811660048301526024820184905284169063253bd7b790604401602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061506f565b8015610fa257506001600160a01b0388161580610fa2575060405163253bd7b760e01b81526001600160a01b0389811660048301526024820183905284169063253bd7b790604401602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa2919061506f565b9998505050505050505050565b600033610a87818585610fc28383611fac565b610fcc91906150a7565b612173565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611062919061501a565b6001600160a01b031614806111095750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe919061501a565b6001600160a01b0316145b6111555760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610ab2565b61115d6126b9565b50565b60006109e17f00000000000000000000000000000000000000000000000000000000000000008361205c565b600033610af58187878088886125a2565b6000610b0161270b565b6103935433906111b790826118e1565b806111d557506111d560008051602061540a833981519152826118e1565b6112215760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663921234706040518163ffffffff1660e01b8152600401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061501a565b90506112b381868686612715565b6001600160a01b038116336001600160a01b03167fbb647b33f4e81f826db7a86f0f82f892f5faaba1e9c8bc300ce7f86019631e27878787604051610dc693929190615050565b7f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd61132581336118e1565b6113a15760405162461bcd60e51b815260206004820152604160248201527f536f6d61416363657373436f6e74726f6c3a2063616c6c657220646f6573206e60448201527f6f7420686176652074686520617070726f70726961746520617574686f7269746064820152607960f81b608482015260a401610ab2565b6113ad6103c685612721565b156113fa5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e5265636f766572793a20494e56414c49445f544f4b454e000000006044820152606401610ab2565b61140e6001600160a01b0385168484612743565b336001600160a01b0316836001600160a01b0316856001600160a01b03167fca574176b1d34032f40f7fb0c519eae468b4535ebf7b27f986a7b6e2fa53d5388560405161145d91815260200190565b60405180910390a450505050565b6001600160a01b038116600090815261010060205260408120546109e190612795565b6000803390506114a16102c754826118e1565b806114d157506114d17f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d826118e1565b61151d5760405162461bcd60e51b815260206004820181905260248201527f5472616e73666572506172746974696f6e733a20554e415554484f52495a45446044820152606401610ab2565b61154a878888886115438c6001600160a01b031660009081526033602052604090205490565b89896127fe565b866001600160a01b03167f88f3ad0eefdad65d8f1bfc7b59905c0ecd55e3b940f32b25fb7f8202adc06b5d8787878760405161158994939291906150ba565b60405180910390a25060019695505050505050565b60006115ae6102fa546108133390565b806115de57506115de7ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1336118e1565b6116505760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f207468697300000000000000006064820152608401610ab2565b61165a83836129ec565b50600192915050565b61029454339061167390826118e1565b806116a357506116a37fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b826118e1565b6116fa5760405162461bcd60e51b815260206004820152602260248201527f446570726563617461626c6553656375726974793a20554e415554484f52495a604482015261115160f21b6064820152608401610ab2565b6117048383612a51565b505050565b6001600160a01b038116600090815261016560205260408120546109e1565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b9919061501a565b6001600160a01b031614806118605750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611855919061501a565b6001600160a01b0316145b6118ac5760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c79006044820152606401610ab2565b61115d612b7e565b60004382106118d55760405162461bcd60e51b8152600401610ab290614fd9565b6109e161010183612297565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611965919061501a565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d14854906044015b602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade919061506f565b6060603780546109f690614fa5565b600033816119f68286611fac565b905083811015611a565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ab2565b610b1f8286868403612173565b600054610100900460ff1615808015611a835750600054600160ff909116105b80611a9d5750303b158015611a9d575060005460ff166001145b611b005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab2565b6000805460ff191660011790558015611b23576000805461ff0019166101001790555b611b2e848484612bbb565b611b36612c80565b604080516000815260208101909152611b4e90612ce6565b8015611b94576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600033610a87818585612516565b610261805460ff191660011790556000611bbf3390565b9050611bce61026054826118e1565b80611bfe5750611bfe7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9826118e1565b611c4a5760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a454400006044820152606401610ab2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015611caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cce919061501a565b9050611cde878288888888612d5c565b806001600160a01b0316876001600160a01b0316611cf93390565b6001600160a01b03167ff09e33fbd8c0db0d38f29395929f555ae5e74f451ee3875b4b871a14c910da7589898989604051611d3794939291906150ba565b60405180910390a45050610261805460ff191690555050505050565b60608167ffffffffffffffff811115611d6e57611d6e6149f3565b604051908082528060200260200182016040528015611da157816020015b6060815260200190600190039081611d8c5790505b50905060005b82811015611e4157611e1130858584818110611dc557611dc56150e9565b9050602002810190611dd791906150ff565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d6a92505050565b828281518110611e2357611e236150e9565b60200260200101819052508080611e399061514d565b915050611da7565b5092915050565b83421115611e985760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610ab2565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611ec78c612e5e565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611f2282612e87565b90506000611f3282878787612ed5565b9050896001600160a01b0316816001600160a01b031614611f955760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610ab2565b611fa08a8a8a612173565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b038316600090815261010060205260409020805463ffffffff841690811061201c5761201c6150e9565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e0919061501a565b6001600160a01b031663253bd7b7836121068660009081526102fb602052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401611998565b60006121468484838086610ddf565b949350505050565b60006001600160e01b03198216638757f10760e01b14806109e157506109e182612efd565b6001600160a01b0383166121d55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab2565b6001600160a01b0382166122365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab2565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8154600090815b818110156122fb5760006122b28284612f22565b9050848682815481106122c7576122c76150e9565b60009182526020909120015463ffffffff1611156122e7578092506122f5565b6122f28160016150a7565b91505b5061229e565b811561233f578461230d600184615166565b8154811061231d5761231d6150e9565b60009182526020909120015464010000000090046001600160e01b0316612342565b60005b6001600160e01b031695945050505050565b6001600160a01b0385166123c05760405162461bcd60e51b815260206004820152602d60248201527f4552433230506172746974696f6e3a20617070726f76652066726f6d2074686560448201526c207a65726f206164647265737360981b6064820152608401610ab2565b6001600160a01b03841661242a5760405162461bcd60e51b815260206004820152602b60248201527f4552433230506172746974696f6e3a20617070726f766520746f20746865207a60448201526a65726f206164647265737360a81b6064820152608401610ab2565b6001600160a01b0380861660008181526069602090815260408083209489168084529482528083208884529091529081902085905551859291907fc7c99c94b6f2aa290d29935e03ed0355e55c0f0d30602ed539bc5dba9d8a1b16906124939087908790615179565b60405180910390a45050505050565b60006124ae8484611fac565b90506000198114611b9457818110156125095760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ab2565b611b948484848403612173565b611704838383612f3d565b6001600160a01b0385811660009081526069602090815260408083209388168352928152828220868352905220546001810161255d575061259b565b8281106125785761257386868686850386612354565b612599565b801561258c5761258c868686600086612354565b61259986868386036124a2565b505b5050505050565b6001600160a01b0386166125c85760405162461bcd60e51b8152600401610ab290615192565b6001600160a01b0385166125ee5760405162461bcd60e51b8152600401610ab2906151e0565b6001600160a01b038616600090815260686020908152604080832087845290915290205461262590879087908790879087876127fe565b612599868684613116565b611b94848484846132f5565b6000610b017f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61266c6101315490565b610132546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6126c1613301565b609c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610b0161334e565b611b94848484846133e2565b6001600160a01b03811660009081526001830160205260408120541515610ade565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526117049084906133ee565b600063ffffffff8211156127fa5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610ab2565b5090565b831580159061281b575060008481526067602052604090205460ff165b1561282557600093505b8183101561288c5760405162461bcd60e51b815260206004820152602e60248201527f4552433230506172746974696f6e3a20696e73756666696369656e742070617260448201526d746974696f6e2062616c616e636560901b6064820152608401610ab2565b61289a8787878786866134c0565b6001600160a01b0380881660009081526068602081815260408084208a855282528084208789039055938a16835290815282822087835290522080548301905582821480156128e857508415155b15612911576001600160a01b038716600090815260656020526040902061290f90866134ce565b505b831561293b576001600160a01b038616600090815260656020526040902061293990856134da565b505b838514612985576000858152606660205260408082208054858103918290558784529190922080548501905590612983576000868152606760205260409020805460ff191690555b505b84866001600160a01b0316886001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce668786866040516129cd93929190615050565b60405180910390a46129e3878787878686612599565b50505050505050565b60008281526102fb602090815260409182902054825185815291820152808201839052905133917f357b76e19994be5e285596f48ee3be9e0cfb1c191d59c3196fcbf73f1995ac7e919081900360600190a260009182526102fb602052604090912055565b60008281526067602052604090205460ff1615612abb5760405162461bcd60e51b815260206004820152602260248201527f4552433230506172746974696f6e3a20616c7265616479206465707265636174604482015261195960f21b6064820152608401610ab2565b81612b275760405162461bcd60e51b815260206004820152603660248201527f4552433230506172746974696f6e3a2063616e6e6f7420646570726563617465604482015275103a3432903232b330bab63a103830b93a34ba34b7b760511b6064820152608401610ab2565b60008281526067602052604090819020805460ff191660011790555182907f179aecdd956102143904725ae8b4e1ee45cd4ae35755c05be2a6dd18b565216190612b7290849061499f565b60405180910390a25050565b612b866134e6565b609c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126ee3390565b600054610100900460ff16612be25760405162461bcd60e51b8152600401610ab29061522c565b612bea61352e565b612bf261352e565b612bfa613555565b612c0261352e565b612c2583604051806040016040528060018152602001603160f81b815250613588565b612c2e836135cb565b612c3661352e565b612c3e6135f2565b612c4661352e565b612c4e61352e565b612c5661352e565b612c5e61366a565b612c6661352e565b612c70828261370c565b612c7861374c565b6117046137c4565b600054610100900460ff16612ca75760405162461bcd60e51b8152600401610ab29061522c565b3060008051602061540a833981519152604051602001612cc8929190615277565b60408051601f19818403018152919052805160209091012061039355565b600054610100900460ff16612d0d5760405162461bcd60e51b8152600401610ab29061522c565b60005b8151811015612d5857612d47828281518110612d2e57612d2e6150e9565b60200260200101516103c661383c90919063ffffffff16565b50612d518161514d565b9050612d10565b5050565b6125998686868686866125a2565b60606001600160a01b0383163b612dd25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610ab2565b600080846001600160a01b031684604051612ded9190615299565b600060405180830381855af49150503d8060008114612e28576040519150601f19603f3d011682016040523d82523d6000602084013e612e2d565b606091505b5091509150612e55828260405180606001604052806027815260200161542a60279139613851565b95945050505050565b6001600160a01b0381166000908152610165602052604090208054600181018255905b50919050565b60006109e1612e9461263c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612ee68787878761388a565b91509150612ef381613977565b5095945050505050565b60006001600160e01b03198216636e59604360e01b14806109e157506109e182613b2d565b6000612f3160028484186152b5565b610ade908484166150a7565b6001600160a01b038316612f635760405162461bcd60e51b8152600401610ab290615192565b6001600160a01b038216612f895760405162461bcd60e51b8152600401610ab2906151e0565b6001600160a01b03831660009081526065602090815260408083206068835281842084805290925282205490918391908115612ff557612fc98284613b6d565b9050612fef87876000801b6000801b8686604051806020016040528060008152506127fe565b80830392505b821561310f57600061300685613b7c565b905060005b818110156130a457600061301f8783613b86565b6001600160a01b038b1660009081526068602090815260408083208484529091528120549650909150859003613055575061300b565b61305f8587613b6d565b935083860395506130848a8a83848989604051806020016040528060008152506127fe565b838503613097576000199092019161309e565b6001909101905b5061300b565b6000851161310c5760405162461bcd60e51b815260206004820152602f60248201527f4552433230506172746974696f6e3a207472616e7366657220616d6f756e742060448201526e657863656564732062616c616e636560881b6064820152608401610ab2565b50505b6129e38787875b6001600160a01b03831661317a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab2565b6001600160a01b0382166131dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab2565b6131e7838383613b92565b6001600160a01b0383166000908152603360205260409020548181101561325f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab2565b6001600160a01b038085166000908152603360205260408082208585039055918516815290812080548492906132969084906150a7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132e291815260200190565b60405180910390a3611b94848484613b9d565b611b9484848484613ba8565b61330961119d565b61334c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610ab2565b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d2919061506f565b80610b01575050609c5460ff1690565b611b9484848484613d8d565b6000613443826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ee39092919063ffffffff16565b8051909150156117045780806020019051810190613461919061506f565b6117045760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ab2565b612599868686868686613ef2565b6000610ade8383613f65565b6000610ade8383614058565b6134ee61119d565b1561334c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610ab2565b600054610100900460ff1661334c5760405162461bcd60e51b8152600401610ab29061522c565b600054610100900460ff1661357c5760405162461bcd60e51b8152600401610ab29061522c565b609c805460ff19169055565b600054610100900460ff166135af5760405162461bcd60e51b8152600401610ab29061522c565b8151602092830120815191909201206101319190915561013255565b600054610100900460ff1661115d5760405162461bcd60e51b8152600401610ab29061522c565b600054610100900460ff166136195760405162461bcd60e51b8152600401610ab29061522c565b307fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef960405160200161364c929190615277565b60408051601f19818403018152919052805160209091012061026055565b600054610100900460ff166136915760405162461bcd60e51b8152600401610ab29061522c565b307ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb16040516020016136c4929190615277565b60408051601f1981840301815291905280516020909101206102fa5561334c7f00000000000000000000000000000000000000000000000000000000000000006000196129ec565b600054610100900460ff166137335760405162461bcd60e51b8152600401610ab29061522c565b603661373f838261531d565b506037611704828261531d565b600054610100900460ff166137735760405162461bcd60e51b8152600401610ab29061522c565b307fca229e2c24b1e5f3121c063a03d242a28455702c403d7f0a8d2dcc0644576a5b6040516020016137a6929190615277565b60408051601f19818403018152919052805160209091012061029455565b600054610100900460ff166137eb5760405162461bcd60e51b8152600401610ab29061522c565b307f0101361cc05e6b89a8f9397a4abf06a8f976d3838579a2733d74c335d8f7804d60405160200161381e929190615277565b60408051601f1981840301815291905280516020909101206102c755565b6000610ade836001600160a01b038416614058565b60608315613860575081610ade565b8251156138705782518084602001fd5b8160405162461bcd60e51b8152600401610ab2919061499f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156138c1575060009050600361396e565b8460ff16601b141580156138d957508460ff16601c14155b156138ea575060009050600461396e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561393e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166139675760006001925092505061396e565b9150600090505b94509492505050565b600081600481111561398b5761398b6153dd565b036139935750565b60018160048111156139a7576139a76153dd565b036139f45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab2565b6002816004811115613a0857613a086153dd565b03613a555760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab2565b6003816004811115613a6957613a696153dd565b03613ac15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab2565b6004816004811115613ad557613ad56153dd565b0361115d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab2565b60006001600160e01b031982166336372b0760e01b1480613b5e57506001600160e01b03198216634ec7fbed60e11b145b806109e157506109e1826140a7565b6000818311612e815782610ade565b60006109e1825490565b6000610ade83836140cc565b6117048383836140f6565b61170483838361415e565b6001600160a01b038416613c115760405162461bcd60e51b815260206004820152602a60248201527f4552433230506172746974696f6e3a206275726e2066726f6d20746865207a65604482015269726f206164647265737360b01b6064820152608401610ab2565b613c20846000858686866134c0565b6001600160a01b038416600090815260686020908152604080832086845290915290205482811015613ca85760405162461bcd60e51b815260206004820152602b60248201527f4552433230506172746974696f6e3a206275726e20616d6f756e74206578636560448201526a6564732062616c616e636560a81b6064820152608401610ab2565b6001600160a01b038516600090815260686020908152604080832087845282528083208685039055606690915281208054859290613ce7908490615166565b90915550508315801590613cfa57508083145b15613d23576001600160a01b0385166000908152606560205260409020613d2190856134ce565b505b8360006001600160a01b0316866001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce66878787604051613d6c93929190615050565b60405180910390a4613d7e8584614169565b61259b85600086878787612599565b6001600160a01b038416613df45760405162461bcd60e51b815260206004820152602860248201527f4552433230506172746974696f6e3a206d696e7420746f20746865207a65726f604482015267206164647265737360c01b6064820152608401610ab2565b613e03600085858686866134c0565b60008381526066602052604081208054849290613e219084906150a7565b90915550506001600160a01b038416600090815260686020908152604080832086845290915290208054830190558215613e79576001600160a01b0384166000908152606560205260409020613e7790846134da565b505b82846001600160a01b031660006001600160a01b03167f214c77385889087531951d8c769c43ea4b785d27fe16f60588f0f4790471ce66868686604051613ec293929190615050565b60405180910390a4613ed484836142ca565b611b9460008585868686612599565b606061214684846000856143bd565b613f00868686868686612599565b613f086144ee565b61259957613f198686868686610ddf565b6125995760405162461bcd60e51b815260206004820152601e60248201527f455243323047756172643a204d495353494e475f50524956494c4547455300006044820152606401610ab2565b6000818152600183016020526040812054801561404e576000613f89600183615166565b8554909150600090613f9d90600190615166565b9050818114614002576000866000018281548110613fbd57613fbd6150e9565b9060005260206000200154905080876000018481548110613fe057613fe06150e9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614013576140136153f3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109e1565b60009150506109e1565b600081815260018301602052604081205461409f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109e1565b5060006109e1565b60006001600160e01b03198216630cbb053b60e41b14806109e157506109e182614508565b60008260000182815481106140e3576140e36150e9565b9060005260206000200154905092915050565b6140fe61119d565b156117045760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610ab2565b61170483838361452d565b6001600160a01b0382166141c95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ab2565b6141d582600083613b92565b6001600160a01b038216600090815260336020526040902054818110156142495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ab2565b6001600160a01b0383166000908152603360205260408120838303905560358054849290614278908490615166565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361170483600084613b9d565b6001600160a01b0382166143205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ab2565b61432c60008383613b92565b806035600082825461433e91906150a7565b90915550506001600160a01b0382166000908152603360205260408120805483929061436b9084906150a7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612d5860008383613b9d565b60608247101561441e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ab2565b6001600160a01b0385163b6144755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ab2565b600080866001600160a01b031685876040516144919190615299565b60006040518083038185875af1925050503d80600081146144ce576040519150601f19603f3d011682016040523d82523d6000602084013e6144d3565b606091505b50915091506144e3828286613851565b979650505050505050565b6102615460009060ff166145025750600090565b50600190565b60006001600160e01b031982166301a4461b60e41b14806109e157506109e18261466c565b816001600160a01b0316836001600160a01b03161415801561454f5750600081115b15611704576001600160a01b038316156145de576001600160a01b038316600090815261010060205260408120819061458b906146918561469d565b91509150846001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c383836040516145d3929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611704576001600160a01b0382166000908152610100602052604081208190614615906148168561469d565b91509150836001600160a01b03167faeeb0cb16f299136e7e5467ea84217150fe83008833064528f360cde7b7b54c3838360405161465d929190918252602082015260400190565b60405180910390a25050505050565b60006001600160e01b031982166372cee8d560e01b14806109e157506109e182614822565b6000610ade8284615166565b8254600090819080156146e857856146b6600183615166565b815481106146c6576146c66150e9565b60009182526020909120015464010000000090046001600160e01b03166146eb565b60005b6001600160e01b0316925061470483858763ffffffff16565b91506000811180156147425750438661471e600184615166565b8154811061472e5761472e6150e9565b60009182526020909120015463ffffffff16145b156147a25761475082614847565b8661475c600184615166565b8154811061476c5761476c6150e9565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555061480d565b8560405180604001604052806147b743612795565b63ffffffff1681526020016147cb85614847565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6000610ade82846150a7565b60006001600160e01b03198216637dfe535960e01b14806109e157506109e1826148b0565b60006001600160e01b038211156127fa5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610ab2565b60006001600160e01b0319821663155977eb60e31b14806109e157506109e18260006001600160e01b0319821663b55bd4f760e01b14806109e157506109e18260006001600160e01b0319821663d86f1ca160e01b14806109e157506301ffc9a760e01b6001600160e01b03198316146109e1565b60006020828403121561493757600080fd5b81356001600160e01b031981168114610ade57600080fd5b60005b8381101561496a578181015183820152602001614952565b50506000910152565b6000815180845261498b81602086016020860161494f565b601f01601f19169290920160200192915050565b602081526000610ade6020830184614973565b6001600160a01b038116811461115d57600080fd5b600080604083850312156149da57600080fd5b82356149e5816149b2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614a1a57600080fd5b813567ffffffffffffffff80821115614a3557614a356149f3565b604051601f8301601f19908116603f01168101908282118183101715614a5d57614a5d6149f3565b81604052838152866020858801011115614a7657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215614aac57600080fd5b8435614ab7816149b2565b93506020850135925060408501359150606085013567ffffffffffffffff811115614ae157600080fd5b614aed87828801614a09565b91505092959194509250565b600080600060608486031215614b0e57600080fd5b8335614b19816149b2565b92506020840135614b29816149b2565b929592945050506040919091013590565b600060208284031215614b4c57600080fd5b5035919050565b600080600080600060a08688031215614b6b57600080fd5b8535614b76816149b2565b94506020860135614b86816149b2565b93506040860135925060608601359150608086013567ffffffffffffffff811115614bb057600080fd5b614bbc88828901614a09565b9150509295509295909350565b600080600060608486031215614bde57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614c0357600080fd5b614c0f86828701614a09565b9150509250925092565b600080600080600060a08688031215614c3157600080fd5b8535614c3c816149b2565b94506020860135614c4c816149b2565b94979496505050506040830135926060810135926080909101359150565b600060208284031215614c7c57600080fd5b8135610ade816149b2565b600080600080600060a08688031215614c9f57600080fd5b8535614caa816149b2565b9450602086013593506040860135925060608601359150608086013567ffffffffffffffff811115614bb057600080fd5b60008060408385031215614cee57600080fd5b50508035926020909101359150565b60008060408385031215614d1057600080fd5b82359150602083013567ffffffffffffffff811115614d2e57600080fd5b614d3a85828601614a09565b9150509250929050565b60008060408385031215614d5757600080fd5b823591506020830135614d69816149b2565b809150509250929050565b600080600060608486031215614d8957600080fd5b833567ffffffffffffffff80821115614da157600080fd5b614dad87838801614a09565b94506020860135915080821115614dc357600080fd5b614dcf87838801614a09565b93506040860135915080821115614de557600080fd5b50614c0f86828701614a09565b60008060208385031215614e0557600080fd5b823567ffffffffffffffff80821115614e1d57600080fd5b818501915085601f830112614e3157600080fd5b813581811115614e4057600080fd5b8660208260051b8501011115614e5557600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614ebc57603f19888603018452614eaa858351614973565b94509285019290850190600101614e8e565b5092979650505050505050565b600080600080600080600060e0888a031215614ee457600080fd5b8735614eef816149b2565b96506020880135614eff816149b2565b95506040880135945060608801359350608088013560ff81168114614f2357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614f5357600080fd5b8235614f5e816149b2565b91506020830135614d69816149b2565b60008060408385031215614f8157600080fd5b8235614f8c816149b2565b9150602083013563ffffffff81168114614d6957600080fd5b600181811c90821680614fb957607f821691505b602082108103612e8157634e487b7160e01b600052602260045260246000fd5b60208082526021908201527f4552433230486973746f72793a20626c6f636b206e6f7420796574206d696e656040820152601960fa1b606082015260800190565b60006020828403121561502c57600080fd5b8151610ade816149b2565b60006020828403121561504957600080fd5b5051919050565b838152826020820152606060408201526000612e556060830184614973565b60006020828403121561508157600080fd5b81518015158114610ade57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109e1576109e1615091565b8481528360208201528260408201526080606082015260006150df6080830184614973565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261511657600080fd5b83018035915067ffffffffffffffff82111561513157600080fd5b60200191503681900382131561514657600080fd5b9250929050565b60006001820161515f5761515f615091565b5060010190565b818103818111156109e1576109e1615091565b8281526040602082015260006121466040830184614973565b6020808252602e908201527f4552433230506172746974696f6e3a207472616e736665722066726f6d20746860408201526d65207a65726f206164647265737360901b606082015260800190565b6020808252602c908201527f4552433230506172746974696f6e3a207472616e7366657220746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60609290921b6bffffffffffffffffffffffff19168252601482015260340190565b600082516152ab81846020870161494f565b9190910192915050565b6000826152d257634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561170457600081815260208120601f850160051c810160208610156152fe5750805b601f850160051c820191505b818110156125995782815560010161530a565b815167ffffffffffffffff811115615337576153376149f3565b61534b816153458454614fa5565b846152d7565b602080601f83116001811461538057600084156153685750858301515b600019600386901b1c1916600185901b178555612599565b600085815260208120601f198616915b828110156153af57888601518255948401946001909101908401615390565b50858210156153cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe8f5f8e26482c221a9e0a6de08669f3a760bcf2c5341c517df908a3e2bde0e36d416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
