{
  "_format": "hh-sol-artifact-1",
  "contractName": "TestCurrencyAC",
  "sourceName": "contracts/TestCurrencyAC.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "initialSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSpender",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "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": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BURNER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "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": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "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": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b506040516111d03803806111d083398101604081905261002f91610351565b84848484838360036100418382610487565b50600461004e8282610487565b50505060ff8116608052610062338361007f565b506100749250600091508390506100be565b505050505050610566565b6001600160a01b0382166100ae5760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b6100ba6000838361016e565b5050565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff166101645760008381526005602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561011c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610168565b5060005b92915050565b6001600160a01b03831661019957806002600082825461018e9190610545565b9091555061020b9050565b6001600160a01b038316600090815260208190526040902054818110156101ec5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100a5565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661022757600280548290039055610246565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161028b91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126102bf57600080fd5b81516001600160401b038111156102d8576102d8610298565b604051601f8201601f19908116603f011681016001600160401b038111828210171561030657610306610298565b60405281815283820160200185101561031e57600080fd5b60005b8281101561033d57602081860181015183830182015201610321565b506000918101602001919091529392505050565b600080600080600060a0868803121561036957600080fd5b85516001600160401b0381111561037f57600080fd5b61038b888289016102ae565b602088015190965090506001600160401b038111156103a957600080fd5b6103b5888289016102ae565b94505060408601519250606086015160ff811681146103d357600080fd5b60808701519092506001600160a01b03811681146103f057600080fd5b809150509295509295909350565b600181811c9082168061041257607f821691505b60208210810361043257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561048257806000526020600020601f840160051c8101602085101561045f5750805b601f840160051c820191505b8181101561047f576000815560010161046b565b50505b505050565b81516001600160401b038111156104a0576104a0610298565b6104b4816104ae84546103fe565b84610438565b6020601f8211600181146104e857600083156104d05750848201515b600019600385901b1c1916600184901b17845561047f565b600084815260208120601f198516915b8281101561051857878501518255602094850194600190920191016104f8565b50848210156105365786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561016857634e487b7160e01b600052601160045260246000fd5b608051610c4f610581600039600061020c0152610c4f6000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad578063a217fddf11610071578063a217fddf146102b3578063a9059cbb146102bb578063d5391393146102ce578063d547741f146102f5578063dd62ed3e1461030857600080fd5b806340c10f191461024957806370a082311461025c57806391d148541461028557806395d89b41146102985780639dc29fac146102a057600080fd5b8063248a9ca3116100f4578063248a9ca3146101a6578063282c51f3146101c95780632f2ff15d146101f0578063313ce5671461020557806336568abe1461023657600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f366004610a32565b610341565b60405190151581526020015b60405180910390f35b610161610378565b6040516101509190610a63565b61014461017c366004610acd565b61040a565b6002545b604051908152602001610150565b6101446101a1366004610af7565b610422565b6101856101b4366004610b34565b60009081526005602052604090206001015490565b6101857f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6102036101fe366004610b4d565b610446565b005b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610150565b610203610244366004610b4d565b610471565b610203610257366004610acd565b6104a9565b61018561026a366004610b79565b6001600160a01b031660009081526020819052604090205490565b610144610293366004610b4d565b6104dd565b610161610508565b6102036102ae366004610acd565b610517565b610185600081565b6101446102c9366004610acd565b61054b565b6101857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610203610303366004610b4d565b610559565b610185610316366004610b94565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061037257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461038790610bbe565b80601f01602080910402602001604051908101604052809291908181526020018280546103b390610bbe565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561057e565b5060019392505050565b60003361043085828561058b565b61043b858585610609565b506001949350505050565b60008281526005602052604090206001015461046181610668565b61046b8383610675565b50505050565b6001600160a01b038116331461049a5760405163334bd91960e11b815260040160405180910390fd5b6104a48282610709565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66104d381610668565b6104a48383610776565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461038790610bbe565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861054181610668565b6104a48383610784565b600033610418818585610609565b60008281526005602052604090206001015461057481610668565b61046b8383610709565b6104a4838383600161078e565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561046b57818110156105fa57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61046b8484848403600061078e565b6001600160a01b03831661063357604051634b637e8f60e11b8152600060048201526024016105f1565b6001600160a01b03821661065d5760405163ec442f0560e01b8152600060048201526024016105f1565b6104a4838383610863565b610672813361098d565b50565b600061068183836104dd565b6107015760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106b93390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610372565b506000610372565b600061071583836104dd565b156107015760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610372565b61078082826109c6565b5050565b61078082826109fc565b6001600160a01b0384166107b85760405163e602df0560e01b8152600060048201526024016105f1565b6001600160a01b0383166107e257604051634a1406b160e11b8152600060048201526024016105f1565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161085591815260200190565b60405180910390a350505050565b6001600160a01b03831661088e5780600260008282546108839190610bf8565b909155506109009050565b6001600160a01b038316600090815260208190526040902054818110156108e15760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105f1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661091c5760028054829003905561093b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161098091815260200190565b60405180910390a3505050565b61099782826104dd565b6107805760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016105f1565b6001600160a01b0382166109f05760405163ec442f0560e01b8152600060048201526024016105f1565b61078060008383610863565b6001600160a01b038216610a2657604051634b637e8f60e11b8152600060048201526024016105f1565b61078082600083610863565b600060208284031215610a4457600080fd5b81356001600160e01b031981168114610a5c57600080fd5b9392505050565b602081526000825180602084015260005b81811015610a915760208186018101516040868401015201610a74565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610ac857600080fd5b919050565b60008060408385031215610ae057600080fd5b610ae983610ab1565b946020939093013593505050565b600080600060608486031215610b0c57600080fd5b610b1584610ab1565b9250610b2360208501610ab1565b929592945050506040919091013590565b600060208284031215610b4657600080fd5b5035919050565b60008060408385031215610b6057600080fd5b82359150610b7060208401610ab1565b90509250929050565b600060208284031215610b8b57600080fd5b610a5c82610ab1565b60008060408385031215610ba757600080fd5b610bb083610ab1565b9150610b7060208401610ab1565b600181811c90821680610bd257607f821691505b602082108103610bf257634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561037257634e487b7160e01b600052601160045260246000fdfea2646970667358221220e6a8965c03956ec2b4507d9d7d3f8e4324e06b4ca37bb5b33ecc3b3cd342588864736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad578063a217fddf11610071578063a217fddf146102b3578063a9059cbb146102bb578063d5391393146102ce578063d547741f146102f5578063dd62ed3e1461030857600080fd5b806340c10f191461024957806370a082311461025c57806391d148541461028557806395d89b41146102985780639dc29fac146102a057600080fd5b8063248a9ca3116100f4578063248a9ca3146101a6578063282c51f3146101c95780632f2ff15d146101f0578063313ce5671461020557806336568abe1461023657600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f366004610a32565b610341565b60405190151581526020015b60405180910390f35b610161610378565b6040516101509190610a63565b61014461017c366004610acd565b61040a565b6002545b604051908152602001610150565b6101446101a1366004610af7565b610422565b6101856101b4366004610b34565b60009081526005602052604090206001015490565b6101857f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6102036101fe366004610b4d565b610446565b005b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610150565b610203610244366004610b4d565b610471565b610203610257366004610acd565b6104a9565b61018561026a366004610b79565b6001600160a01b031660009081526020819052604090205490565b610144610293366004610b4d565b6104dd565b610161610508565b6102036102ae366004610acd565b610517565b610185600081565b6101446102c9366004610acd565b61054b565b6101857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610203610303366004610b4d565b610559565b610185610316366004610b94565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061037257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461038790610bbe565b80601f01602080910402602001604051908101604052809291908181526020018280546103b390610bbe565b80156104005780601f106103d557610100808354040283529160200191610400565b820191906000526020600020905b8154815290600101906020018083116103e357829003601f168201915b5050505050905090565b60003361041881858561057e565b5060019392505050565b60003361043085828561058b565b61043b858585610609565b506001949350505050565b60008281526005602052604090206001015461046181610668565b61046b8383610675565b50505050565b6001600160a01b038116331461049a5760405163334bd91960e11b815260040160405180910390fd5b6104a48282610709565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66104d381610668565b6104a48383610776565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461038790610bbe565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861054181610668565b6104a48383610784565b600033610418818585610609565b60008281526005602052604090206001015461057481610668565b61046b8383610709565b6104a4838383600161078e565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561046b57818110156105fa57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61046b8484848403600061078e565b6001600160a01b03831661063357604051634b637e8f60e11b8152600060048201526024016105f1565b6001600160a01b03821661065d5760405163ec442f0560e01b8152600060048201526024016105f1565b6104a4838383610863565b610672813361098d565b50565b600061068183836104dd565b6107015760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106b93390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610372565b506000610372565b600061071583836104dd565b156107015760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610372565b61078082826109c6565b5050565b61078082826109fc565b6001600160a01b0384166107b85760405163e602df0560e01b8152600060048201526024016105f1565b6001600160a01b0383166107e257604051634a1406b160e11b8152600060048201526024016105f1565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561046b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161085591815260200190565b60405180910390a350505050565b6001600160a01b03831661088e5780600260008282546108839190610bf8565b909155506109009050565b6001600160a01b038316600090815260208190526040902054818110156108e15760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105f1565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661091c5760028054829003905561093b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161098091815260200190565b60405180910390a3505050565b61099782826104dd565b6107805760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016105f1565b6001600160a01b0382166109f05760405163ec442f0560e01b8152600060048201526024016105f1565b61078060008383610863565b6001600160a01b038216610a2657604051634b637e8f60e11b8152600060048201526024016105f1565b61078082600083610863565b600060208284031215610a4457600080fd5b81356001600160e01b031981168114610a5c57600080fd5b9392505050565b602081526000825180602084015260005b81811015610a915760208186018101516040868401015201610a74565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610ac857600080fd5b919050565b60008060408385031215610ae057600080fd5b610ae983610ab1565b946020939093013593505050565b600080600060608486031215610b0c57600080fd5b610b1584610ab1565b9250610b2360208501610ab1565b929592945050506040919091013590565b600060208284031215610b4657600080fd5b5035919050565b60008060408385031215610b6057600080fd5b82359150610b7060208401610ab1565b90509250929050565b600060208284031215610b8b57600080fd5b610a5c82610ab1565b60008060408385031215610ba757600080fd5b610bb083610ab1565b9150610b7060208401610ab1565b600181811c90821680610bd257607f821691505b602082108103610bf257634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561037257634e487b7160e01b600052601160045260246000fdfea2646970667358221220e6a8965c03956ec2b4507d9d7d3f8e4324e06b4ca37bb5b33ecc3b3cd342588864736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
