{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721FullMintOnceBurnMock",
  "sourceName": "contracts/mocks/token/ERC721/preset/ERC721FullMintOnceBurnMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "metadataResolver",
          "type": "address"
        },
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "filterRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "ERC2981IncorrectRoyaltyPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC2981IncorrectRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721BalanceOfAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721BurntToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721ExistingToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForTransfer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonExistingToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonOwnedToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotRoleHolder",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "OperatorNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROYALTY_FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchBurnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "deliver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "approved",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasRole_",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "approvedForAll",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataResolver",
      "outputs": [
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "tokenMetadataResolver",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "operatorFilterRegistry",
      "outputs": [
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "royaltyAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setRoyaltyPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "setRoyaltyReceiver",
      "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": "tokenSymbol",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "registry",
          "type": "address"
        }
      ],
      "name": "updateOperatorFilterRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "wasBurnt",
      "outputs": [
        {
          "internalType": "bool",
          "name": "tokenWasBurnt",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234610620576148b98038038061001981610625565b928339810160a0828203126106205781516001600160401b038111610620578161004491840161064a565b602083015190916001600160401b0382116106205761006491840161064a565b60408301519092906001600160a01b038116908190036106205760608201516001600160a01b03811692908390036106205760800151926001600160a01b038416840361062057336105c1575b7fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460ff1990811660019081179092557f8ed2355fc3f859d445b81332ba1875c675be71b9fe1bab0a25be6436696b0ec780548216831790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3080546001600160a01b03191690961790955563f3993d1160e01b6000527f98ea984a1dd4b0fbb2764a2a70a93d7e6137ea3c70db196cc96460f50c0d1a1f8054909516179093558051906001600160401b038211610497576000805160206148798339815191525490600182811c921680156105b7575b60208310146104775781601f84931161053a575b50602090601f83116001146104b8576000926104ad575b50508160011b916000199060031b1c191617600080516020614879833981519152555b83516001600160401b0381116104975760008051602061489983398151915254600181811c9116801561048d575b602082101461047757601f8111610405575b50602094601f821160011461038457948192939495600092610379575b50508160011b916000199060031b1c191617600080516020614899833981519152555b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a680546001600160a01b031916919091179055635b5e139f60e01b60009081526020919091526040808220805460ff199081166001908117909255638e773e1360e01b84528284208054821683179055634ed2f41960e11b84528284208054821683179055638b8b4ef560e01b8452828420805482168317905563152a902d60e11b845292829020805490931617909155608091909152516141c390816106b68239608051818181612a470152818161348901528181613d620152613f0d0152f35b015190503880610274565b601f19821695600080516020614899833981519152600052806000209160005b8881106103ed575083600195969798106103d4575b505050811b0160008051602061489983398151915255610297565b015160001960f88460031b161c191690553880806103b9565b919260206001819286850151815501940192016103a4565b6000805160206148998339815191526000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c8101916020841061046d575b601f0160051c01905b8181106104615750610257565b60008155600101610454565b909150819061044b565b634e487b7160e01b600052602260045260246000fd5b90607f1690610245565b634e487b7160e01b600052604160045260246000fd5b0151905038806101f4565b60008051602061487983398151915260009081528281209350601f198516905b8181106105225750908460019594939210610509575b505050811b0160008051602061487983398151915255610217565b015160001960f88460031b161c191690553880806104ee565b929360206001819287860151815501950193016104d8565b6000805160206148798339815191526000529091507f565de0cfbb8a3f70c938db1afc5562690ff7c55773c7234a649300f58e3b30bc601f840160051c810191602085106105ad575b90601f859493920160051c01905b81811061059e57506101dd565b60008155849350600101610591565b9091508190610583565b91607f16916101c9565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36100b1565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761049757604052565b81601f82011215610620578051906001600160401b03821161049757610679601f8301601f1916602001610625565b92828452602083830101116106205760005b8281106106a057505060206000918301015290565b8060208092840101518282870101520161068b56fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461305157806306fdde0314612ff6578063081812fc14612f99578063095ea7b314612d05578063114ba8ee14612c0657806323b872dd14612b5e5780632a55205a14612a6b5780632b4c9f16146129fc5780632f2ff15d1461287057806331e66e1e146127ed57806340c10f191461275d57806342842e0e1461268d5780634684d7e9146124c9578063572b6c051461247e57806361ba27da146123625780636352211e146122e757806370a082311461221d57806373c8a9581461206d57806379cc679014611dcf5780638832e6e314611b815780638bb9c5bf14611a125780638da5cb5b146119a15780638dc251e31461187457806391d14854146117dc57806395d89b411461176d5780639da5e832146114ec578063a0c76f621461147b578063a22cb4651461131b578063b0ccc31e146112aa578063b88d4fde14611188578063c3666c3614610f4b578063c77c695514610ec0578063c87b56dd14610d0d578063d539139314610cb4578063d547741f14610b2b578063e1a8bf2c14610aef578063e985e9c514610a3b578063f247296514610816578063f2fde38b14610722578063f3993d111461039c5763f7ba94bd146101df57600080fd5b34610340576101ed36613332565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061022e613d4b565b925416911690810361036f57508181036103455760005b81811061024e57005b610259818387613b10565b3573ffffffffffffffffffffffffffffffffffffffff811680910361034057610283828587613b10565b359081471061030e57600080809381935af13d15610306573d906102a6826134d1565b916102b4604051938461339e565b82523d6000602084013e5b156102cd5750600101610245565b8051156102dc57602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102bf565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576103d361311d565b6103db613140565b9060443567ffffffffffffffff8111610340576103fc9036906004016131d5565b92610405613d4b565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603610712575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106e8576104aa8382849694613e76565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061052d578787878181141580610524575b6104e257005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104dc565b610538818986613b10565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106ba57880361068857846105b1575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104c8565b7401000000000000000000000000000000000000000016158015610625575b6105da5789610570565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105d0565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61071b91613c60565b858261045c565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761075961311d565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc90610783613d4b565b9073ffffffffffffffffffffffffffffffffffffffff80845416921682810361036f575073ffffffffffffffffffffffffffffffffffffffff16918282036107c757005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103405761082436613206565b917fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09161084f613d4b565b9261085b848483613e76565b9373ffffffffffffffffffffffffffffffffffffffff600095159416945b8681106108c05786868161088957005b6000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154039055600080f35b6108cb818886613b10565b35806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106ba5788036106885786610964575b509081600192600052846020527fdead0000000000000000000000000000000000000000000000000000000000006040600020556000887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a401610879565b74010000000000000000000000000000000000000000161580156109d8575b61098d5788610903565b8673ffffffffffffffffffffffffffffffffffffffff847fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff84161415610983565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610a7261311d565b73ffffffffffffffffffffffffffffffffffffffff610a8f613140565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576020604051620186a08152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057600435610b65613140565b610b6d613d4b565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361036f57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610c1f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610dff6000600435610d6e817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613ab5565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610eb457600091610e2c575b60405160208082528190610e28908201856130da565b0390f35b3d8083833e610e3b818361339e565b810190602081830312610eac5780519067ffffffffffffffff8211610eb0570181601f82011215610eac57805192610e72846134d1565b92610e80604051948561339e565b84845260208584010111610ea95750610e2892610ea391602080850191016130b7565b90610e12565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c060043560005260205260207fdead00000000000000000000000000000000000000000000000000000000000060406000205414604051908152f35b3461034057610f5936613275565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610f9e613d4b565b925416911690810361036f575080821480159061117e575b6103455760005b828110610fc657005b73ffffffffffffffffffffffffffffffffffffffff610fee610fe983858a613b10565b613b20565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610eb457600091611150575b5015611123575073ffffffffffffffffffffffffffffffffffffffff61107d610fe983858a613b10565b169061108d610fe9828689613b10565b9161109982878b613b10565b3592813b1561034057606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610eb457600192611112575b5001610fbd565b600061111d9161339e565b8861110b565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611171915060203d8111611177575b611169818361339e565b810190613b41565b89611053565b503d61115f565b5082821415610fb6565b346103405760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576111bf61311d565b6111c7613140565b60443560643567ffffffffffffffff8111610340576111ea903690600401613304565b9290936111f5613d4b565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff82160361129a575b505061127b848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b823b61128357005b6112989561129291369161350b565b9361403c565b005b6112a391613c60565b868561124c565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761135261311d565b60243590811515918281036103405761144c575b73ffffffffffffffffffffffffffffffffffffffff80611384613d4b565b1691169181831461141e5760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611476817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613c60565b611366565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b34610340576114fa36613332565b91929161152f7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b90613899565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09361155a8161340e565b93611568604051958661339e565b818552602085019160051b81019036821161034057915b8183106117405750505090611595913691613426565b9181519280518403610345577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1939260005b8481106115d057005b73ffffffffffffffffffffffffffffffffffffffff6115ef8284613a72565b51168015611716576116018285613a72565b5190816000528560205260406000205473ffffffffffffffffffffffffffffffffffffffff81166116e8577fdead000000000000000000000000000000000000000000000000000000000000146116ba5790600192918160005286602052806040600020556040600073ffffffffffffffffffffffffffffffffffffffff831681528a6020522084815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4016115c7565b507f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b823573ffffffffffffffffffffffffffffffffffffffff811681036103405781526020928301920161157f565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610e286117c87f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613b59565b6040519182916020835260208301906130da565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611813613140565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576118ab61311d565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806118ea613d4b565b925416911690810361036f57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156119775773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611a6d613d4b565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615611b395760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610caf565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103405760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611bb861311d565b6024359060443567ffffffffffffffff811161034057611bdc903690600401613304565b91611c097fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b611c498482611c437fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c095611c3b613d4b565b97369161350b565b9461395b565b803b611c5157005b73ffffffffffffffffffffffffffffffffffffffff806020921693611cbe60405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906130da565b03816000865af1908115610eb457600091611d50575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2057005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611dc7575b81611d696020938361339e565b81010312611dc35751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610ea957507fffffffff00000000000000000000000000000000000000000000000000000000611cd4565b5080fd5b3d9150611d5c565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611e0661311d565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0611e33613d4b565b836000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561203f5773ffffffffffffffffffffffffffffffffffffffff811680950361200d5782611e889185613e76565b15611f36575b84600085858383526020527fdead00000000000000000000000000000000000000000000000000000000000060408320558082527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b7401000000000000000000000000000000000000000016158015611faa575b611f5f5780611e8e565b73ffffffffffffffffffffffffffffffffffffffff91507fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415611f55565b85857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b857fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405761207b36613275565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806120be613d4b565b925416911690810361036f5750808414801590612213575b6103455760005b8481106120e657005b6120f1818388613b10565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610340576000602091612124610fe9868b8e613b10565b8261218e6121ba612136898d8d613b10565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261339e565b51925af115610eb4576000513d61220a5750803b155b6121dd57506001016120dd565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156121d0565b50828414156120d6565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761225461311d565b73ffffffffffffffffffffffffffffffffffffffff8116156122bd5773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206123446004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613ab5565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806123d3613d4b565b925416911690810361036f57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a0811161245157815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206124bf6124ba61311d565b613472565b6040519015158152f35b346103405761254873ffffffffffffffffffffffffffffffffffffffff6124ef36613206565b9291939061251f7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0933691613426565b92169081156117165782519260005b848110612598575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b6125a28183613a72565b51806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811661265f577fdead0000000000000000000000000000000000000000000000000000000000001461263257908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401612557565b7f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405761269b36613163565b6126a3613d4b565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361274d575b5050612729828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b803b61273157005b611298936040519361274460208661339e565b6000855261403c565b61275691613c60565b84836126fa565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761129861279761311d565b6127c37fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c061395b565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576040612826613ef6565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004356128aa613140565b6128b2613d4b565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361036f57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561296557005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610caf565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612b56575b15612b20575050610e2860005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610e2891620186a0821015612b4357612b3d90620186a092613857565b04612af0565b620186a0612b519204613857565b612af0565b508115612ae3565b3461034057611298612b6f36613163565b91612b78613d4b565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612bf6575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b612bff91613c60565b8581612bce565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760043573ffffffffffffffffffffffffffffffffffffffff81168103610340577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80612c94613d4b565b925416911690810361036f575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057612d3c61311d565b6024359073ffffffffffffffffffffffffffffffffffffffff8116908115908115612f69575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0612d8c613d4b565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff8216938415612f3b57848614612f0d57612dcc818686613e76565b15612ec1575015612e30577401000000000000000000000000000000000000000016612e1c575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b836000526020528060406000205583612df3565b90740100000000000000000000000000000000000000008217809203612ead575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055612df5565b846000526020526040600020558380612e51565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b612f93907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613c60565b83612d62565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206123446004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06135f1565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610e286117c87f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613b59565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610340576124bf602091613542565b60005b8381106130ca5750506000910152565b81810151838201526020016130ba565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093613116815180928187528780880191016130b7565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103405760043573ffffffffffffffffffffffffffffffffffffffff81168103610340579060243573ffffffffffffffffffffffffffffffffffffffff81168103610340579060443590565b9181601f840112156103405782359167ffffffffffffffff8311610340576020808501948460051b01011161034057565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103405760043573ffffffffffffffffffffffffffffffffffffffff8116810361034057916024359067ffffffffffffffff821161034057613271916004016131d5565b9091565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103405760043567ffffffffffffffff811161034057816132be916004016131d5565b9290929160243567ffffffffffffffff811161034057816132e1916004016131d5565b929092916044359067ffffffffffffffff821161034057613271916004016131d5565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103405760043567ffffffffffffffff8111610340578161337b916004016131d5565b929092916024359067ffffffffffffffff821161034057613271916004016131d5565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176133df57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116133df5760051b60200190565b9291906134328161340e565b93613440604051958661339e565b602085838152019160051b810192831161034057905b82821061346257505050565b8135815260209182019101613456565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156134ca5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff81116133df57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192613517826134d1565b91613525604051938461339e565b829481845281830111610340578281602093846000960137010152565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff0000000000000000000000000000000000000000000000000000000081146135eb577f01ffc9a70000000000000000000000000000000000000000000000000000000081146135e5576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106ba577401000000000000000000000000000000000000000016156134ca576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b909273ffffffffffffffffffffffffffffffffffffffff169283156106e857846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff8116938415612f3b5773ffffffffffffffffffffffffffffffffffffffff811680950361382557826136d49185613e76565b1561376a575b505083600052806020528260406000205582820361371b575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905582600052602052604060002060018154019055386136f3565b74010000000000000000000000000000000000000000161580156137df575b61379357806136da565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415613789565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b8181029291811591840414171561386a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156138f35750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff1690811561171657826000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116613a44577fdead00000000000000000000000000000000000000000000000000000000000014613a1657600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8051821015613a865760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff60406000205416908115613ae3575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b9190811015613a865760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036103405790565b90816020910312610340575180151581036103405790565b906040519160008154918260011c92600181168015613c56575b602085108114613c2957848752869392918115613be95750600114613ba2575b50613ba09250038361339e565b565b90506000929192526020600020906000915b818310613bcd575050906020613ba09282010138613b93565b6020919350806001915483858901015201910190918492613bb4565b60209350613ba09592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613b93565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693613b73565b5473ffffffffffffffffffffffffffffffffffffffff169081151580613d41575b613c89575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610eb457600091613d22575b5015613cf55750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613d3b915060203d60201161117757611169818361339e565b38613cec565b50813b1515613c81565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613e67573233148015613e6c575b613e67577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613dd6575b50613dd357503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610eb457600091613e48575b5038613dc9565b613e61915060203d60201161117757611169818361339e565b38613e41565b503390565b5060183610613d92565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315613ea1575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613e9b565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561402a573233148015614032575b61402a57803314908115613f89575b50613f58576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116103405760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610eb45760009161400b575b5038613f4c565b614024915060203d60201161117757611169818361339e565b38614004565b506000903690565b5060183610613f3d565b73ffffffffffffffffffffffffffffffffffffffff906140ae826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906130da565b03816000865af1908115610eb457600091614112575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d20575050565b6020813d602011614185575b8161412b6020938361339e565b81010312611dc35751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610ea957507fffffffff000000000000000000000000000000000000000000000000000000006140c4565b3d915061411e56fea2646970667358221220bf180ed69a8ee63f6b8acf1837c6462b80cd489b2b7cf39a0040f0a21c1a7ecf64736f6c634300081e00337ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a47ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461305157806306fdde0314612ff6578063081812fc14612f99578063095ea7b314612d05578063114ba8ee14612c0657806323b872dd14612b5e5780632a55205a14612a6b5780632b4c9f16146129fc5780632f2ff15d1461287057806331e66e1e146127ed57806340c10f191461275d57806342842e0e1461268d5780634684d7e9146124c9578063572b6c051461247e57806361ba27da146123625780636352211e146122e757806370a082311461221d57806373c8a9581461206d57806379cc679014611dcf5780638832e6e314611b815780638bb9c5bf14611a125780638da5cb5b146119a15780638dc251e31461187457806391d14854146117dc57806395d89b411461176d5780639da5e832146114ec578063a0c76f621461147b578063a22cb4651461131b578063b0ccc31e146112aa578063b88d4fde14611188578063c3666c3614610f4b578063c77c695514610ec0578063c87b56dd14610d0d578063d539139314610cb4578063d547741f14610b2b578063e1a8bf2c14610aef578063e985e9c514610a3b578063f247296514610816578063f2fde38b14610722578063f3993d111461039c5763f7ba94bd146101df57600080fd5b34610340576101ed36613332565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061022e613d4b565b925416911690810361036f57508181036103455760005b81811061024e57005b610259818387613b10565b3573ffffffffffffffffffffffffffffffffffffffff811680910361034057610283828587613b10565b359081471061030e57600080809381935af13d15610306573d906102a6826134d1565b916102b4604051938461339e565b82523d6000602084013e5b156102cd5750600101610245565b8051156102dc57602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102bf565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576103d361311d565b6103db613140565b9060443567ffffffffffffffff8111610340576103fc9036906004016131d5565b92610405613d4b565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603610712575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106e8576104aa8382849694613e76565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061052d578787878181141580610524575b6104e257005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104dc565b610538818986613b10565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106ba57880361068857846105b1575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104c8565b7401000000000000000000000000000000000000000016158015610625575b6105da5789610570565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105d0565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61071b91613c60565b858261045c565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761075961311d565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc90610783613d4b565b9073ffffffffffffffffffffffffffffffffffffffff80845416921682810361036f575073ffffffffffffffffffffffffffffffffffffffff16918282036107c757005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103405761082436613206565b917fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09161084f613d4b565b9261085b848483613e76565b9373ffffffffffffffffffffffffffffffffffffffff600095159416945b8681106108c05786868161088957005b6000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154039055600080f35b6108cb818886613b10565b35806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106ba5788036106885786610964575b509081600192600052846020527fdead0000000000000000000000000000000000000000000000000000000000006040600020556000887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a401610879565b74010000000000000000000000000000000000000000161580156109d8575b61098d5788610903565b8673ffffffffffffffffffffffffffffffffffffffff847fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff84161415610983565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610a7261311d565b73ffffffffffffffffffffffffffffffffffffffff610a8f613140565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576020604051620186a08152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057600435610b65613140565b610b6d613d4b565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361036f57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610c1f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610dff6000600435610d6e817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613ab5565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610eb457600091610e2c575b60405160208082528190610e28908201856130da565b0390f35b3d8083833e610e3b818361339e565b810190602081830312610eac5780519067ffffffffffffffff8211610eb0570181601f82011215610eac57805192610e72846134d1565b92610e80604051948561339e565b84845260208584010111610ea95750610e2892610ea391602080850191016130b7565b90610e12565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c060043560005260205260207fdead00000000000000000000000000000000000000000000000000000000000060406000205414604051908152f35b3461034057610f5936613275565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610f9e613d4b565b925416911690810361036f575080821480159061117e575b6103455760005b828110610fc657005b73ffffffffffffffffffffffffffffffffffffffff610fee610fe983858a613b10565b613b20565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610eb457600091611150575b5015611123575073ffffffffffffffffffffffffffffffffffffffff61107d610fe983858a613b10565b169061108d610fe9828689613b10565b9161109982878b613b10565b3592813b1561034057606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610eb457600192611112575b5001610fbd565b600061111d9161339e565b8861110b565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611171915060203d8111611177575b611169818361339e565b810190613b41565b89611053565b503d61115f565b5082821415610fb6565b346103405760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576111bf61311d565b6111c7613140565b60443560643567ffffffffffffffff8111610340576111ea903690600401613304565b9290936111f5613d4b565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff82160361129a575b505061127b848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b823b61128357005b6112989561129291369161350b565b9361403c565b005b6112a391613c60565b868561124c565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761135261311d565b60243590811515918281036103405761144c575b73ffffffffffffffffffffffffffffffffffffffff80611384613d4b565b1691169181831461141e5760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b611476817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613c60565b611366565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b34610340576114fa36613332565b91929161152f7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b90613899565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09361155a8161340e565b93611568604051958661339e565b818552602085019160051b81019036821161034057915b8183106117405750505090611595913691613426565b9181519280518403610345577fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1939260005b8481106115d057005b73ffffffffffffffffffffffffffffffffffffffff6115ef8284613a72565b51168015611716576116018285613a72565b5190816000528560205260406000205473ffffffffffffffffffffffffffffffffffffffff81166116e8577fdead000000000000000000000000000000000000000000000000000000000000146116ba5790600192918160005286602052806040600020556040600073ffffffffffffffffffffffffffffffffffffffff831681528a6020522084815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4016115c7565b507f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b823573ffffffffffffffffffffffffffffffffffffffff811681036103405781526020928301920161157f565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610e286117c87f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613b59565b6040519182916020835260208301906130da565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611813613140565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576118ab61311d565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806118ea613d4b565b925416911690810361036f57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156119775773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611a6d613d4b565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615611b395760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610caf565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103405760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611bb861311d565b6024359060443567ffffffffffffffff811161034057611bdc903690600401613304565b91611c097fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b611c498482611c437fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c095611c3b613d4b565b97369161350b565b9461395b565b803b611c5157005b73ffffffffffffffffffffffffffffffffffffffff806020921693611cbe60405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906130da565b03816000865af1908115610eb457600091611d50575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d2057005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611dc7575b81611d696020938361339e565b81010312611dc35751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610ea957507fffffffff00000000000000000000000000000000000000000000000000000000611cd4565b5080fd5b3d9150611d5c565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057611e0661311d565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0611e33613d4b565b836000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561203f5773ffffffffffffffffffffffffffffffffffffffff811680950361200d5782611e889185613e76565b15611f36575b84600085858383526020527fdead00000000000000000000000000000000000000000000000000000000000060408320558082527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c1602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b7401000000000000000000000000000000000000000016158015611faa575b611f5f5780611e8e565b73ffffffffffffffffffffffffffffffffffffffff91507fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415611f55565b85857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b857fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405761207b36613275565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806120be613d4b565b925416911690810361036f5750808414801590612213575b6103455760005b8481106120e657005b6120f1818388613b10565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610340576000602091612124610fe9868b8e613b10565b8261218e6121ba612136898d8d613b10565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261339e565b51925af115610eb4576000513d61220a5750803b155b6121dd57506001016120dd565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156121d0565b50828414156120d6565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761225461311d565b73ffffffffffffffffffffffffffffffffffffffff8116156122bd5773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206123446004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613ab5565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806123d3613d4b565b925416911690810361036f57507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a0811161245157815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206124bf6124ba61311d565b613472565b6040519015158152f35b346103405761254873ffffffffffffffffffffffffffffffffffffffff6124ef36613206565b9291939061251f7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0933691613426565b92169081156117165782519260005b848110612598575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b6125a28183613a72565b51806000528360205260406000205473ffffffffffffffffffffffffffffffffffffffff811661265f577fdead0000000000000000000000000000000000000000000000000000000000001461263257908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401612557565b7f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b507f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103405761269b36613163565b6126a3613d4b565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff82160361274d575b5050612729828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b803b61273157005b611298936040519361274460208661339e565b6000855261403c565b61275691613c60565b84836126fa565b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405761129861279761311d565b6127c37fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611529613d4b565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c061395b565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576040612826613ef6565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004356128aa613140565b6128b2613d4b565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361036f57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561296557005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610caf565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612b56575b15612b20575050610e2860005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610e2891620186a0821015612b4357612b3d90620186a092613857565b04612af0565b620186a0612b519204613857565b612af0565b508115612ae3565b3461034057611298612b6f36613163565b91612b78613d4b565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612bf6575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613660565b612bff91613c60565b8581612bce565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760043573ffffffffffffffffffffffffffffffffffffffff81168103610340577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80612c94613d4b565b925416911690810361036f575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103405760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057612d3c61311d565b6024359073ffffffffffffffffffffffffffffffffffffffff8116908115908115612f69575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0612d8c613d4b565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff8216938415612f3b57848614612f0d57612dcc818686613e76565b15612ec1575015612e30577401000000000000000000000000000000000000000016612e1c575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b836000526020528060406000205583612df3565b90740100000000000000000000000000000000000000008217809203612ead575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055612df5565b846000526020526040600020558380612e51565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b612f93907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613c60565b83612d62565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103405760206123446004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c06135f1565b346103405760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261034057610e286117c87f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613b59565b346103405760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610340576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610340576124bf602091613542565b60005b8381106130ca5750506000910152565b81810151838201526020016130ba565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093613116815180928187528780880191016130b7565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103405760043573ffffffffffffffffffffffffffffffffffffffff81168103610340579060243573ffffffffffffffffffffffffffffffffffffffff81168103610340579060443590565b9181601f840112156103405782359167ffffffffffffffff8311610340576020808501948460051b01011161034057565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103405760043573ffffffffffffffffffffffffffffffffffffffff8116810361034057916024359067ffffffffffffffff821161034057613271916004016131d5565b9091565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103405760043567ffffffffffffffff811161034057816132be916004016131d5565b9290929160243567ffffffffffffffff811161034057816132e1916004016131d5565b929092916044359067ffffffffffffffff821161034057613271916004016131d5565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103405760043567ffffffffffffffff8111610340578161337b916004016131d5565b929092916024359067ffffffffffffffff821161034057613271916004016131d5565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176133df57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116133df5760051b60200190565b9291906134328161340e565b93613440604051958661339e565b602085838152019160051b810192831161034057905b82821061346257505050565b8135815260209182019101613456565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156134ca5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff81116133df57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192613517826134d1565b91613525604051938461339e565b829481845281830111610340578281602093846000960137010152565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff0000000000000000000000000000000000000000000000000000000081146135eb577f01ffc9a70000000000000000000000000000000000000000000000000000000081146135e5576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106ba577401000000000000000000000000000000000000000016156134ca576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b909273ffffffffffffffffffffffffffffffffffffffff169283156106e857846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff8116938415612f3b5773ffffffffffffffffffffffffffffffffffffffff811680950361382557826136d49185613e76565b1561376a575b505083600052806020528260406000205582820361371b575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905582600052602052604060002060018154019055386136f3565b74010000000000000000000000000000000000000000161580156137df575b61379357806136da565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415613789565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b8181029291811591840414171561386a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156138f35750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff1690811561171657826000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116613a44577fdead00000000000000000000000000000000000000000000000000000000000014613a1657600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f31e8d3d50000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8051821015613a865760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff60406000205416908115613ae3575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b9190811015613a865760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff811681036103405790565b90816020910312610340575180151581036103405790565b906040519160008154918260011c92600181168015613c56575b602085108114613c2957848752869392918115613be95750600114613ba2575b50613ba09250038361339e565b565b90506000929192526020600020906000915b818310613bcd575050906020613ba09282010138613b93565b6020919350806001915483858901015201910190918492613bb4565b60209350613ba09592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613b93565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693613b73565b5473ffffffffffffffffffffffffffffffffffffffff169081151580613d41575b613c89575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610eb457600091613d22575b5015613cf55750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613d3b915060203d60201161117757611169818361339e565b38613cec565b50813b1515613c81565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613e67573233148015613e6c575b613e67577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613dd6575b50613dd357503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610eb457600091613e48575b5038613dc9565b613e61915060203d60201161117757611169818361339e565b38613e41565b503390565b5060183610613d92565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315613ea1575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613e9b565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561402a573233148015614032575b61402a57803314908115613f89575b50613f58576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116103405760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610eb45760009161400b575b5038613f4c565b614024915060203d60201161117757611169818361339e565b38614004565b506000903690565b5060183610613f3d565b73ffffffffffffffffffffffffffffffffffffffff906140ae826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906130da565b03816000865af1908115610eb457600091614112575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611d20575050565b6020813d602011614185575b8161412b6020938361339e565b81010312611dc35751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610ea957507fffffffff000000000000000000000000000000000000000000000000000000006140c4565b3d915061411e56fea2646970667358221220bf180ed69a8ee63f6b8acf1837c6462b80cd489b2b7cf39a0040f0a21c1a7ecf64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
