{
  "_format": "hh-sol-artifact-1",
  "contractName": "PoolFee",
  "sourceName": "contracts/V3/PoolFee.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "clusterAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalCallGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "Bill",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "channel",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalCallGas",
          "type": "uint256"
        }
      ],
      "name": "DepositHandler",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "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": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "WithdrawClusterAdminDeposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "WithdrawHandler",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BILL_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": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterAdmin",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexInput",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "ruleSlotIndexOutput",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "totalCallGas",
          "type": "uint256"
        }
      ],
      "name": "bill",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "totalCallGas",
          "type": "uint256"
        }
      ],
      "name": "calFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "clusterAdminDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cname",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "clusterId",
          "type": "uint32"
        }
      ],
      "name": "depositCluster",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "channel",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "totalCallGas",
          "type": "uint256"
        }
      ],
      "name": "depositHandler",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        }
      ],
      "name": "getHandlerFeeState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "handler",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            },
            {
              "internalType": "uint8",
              "name": "state",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "callCount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "deployer",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "minGasFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "gasFeeRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "earning",
              "type": "uint256"
            }
          ],
          "internalType": "struct PoolFee.HandlerFeeState",
          "name": "",
          "type": "tuple"
        }
      ],
      "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": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "handlerDeployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "handlerEarning",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "handlerGasFeeRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "handlerMinGasFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "clusterHandlerArea_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "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": "address",
          "name": "clusterHandlerArea_",
          "type": "address"
        }
      ],
      "name": "setClusterHandlerArea",
      "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": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minGasFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasFeeRate",
          "type": "uint256"
        }
      ],
      "name": "updateHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "withdrawClusterAdminDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handler",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "weiValue",
          "type": "uint256"
        }
      ],
      "name": "withdrawHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612152806100206000396000f3fe60806040526004361061016d5760003560e01c80637e692466116100c75780637e692466146103aa5780637ea336ea146103ca5780638a90723d146103ea5780638da5cb5b146104175780639010d07c1461043557806391d148541461045557806391e45f5e14610475578063a217fddf146104a2578063a80bf443146104b7578063acdea3b6146104ca578063b24f833e146104ec578063ca15c87314610519578063d547741f14610539578063f2fde38b14610559578063fa18df1d1461057957600080fd5b806301ffc9a71461017257806304d61165146101a757806307226ad6146101c95780630c073791146101e9578063248a9ca3146102175780632f2ff15d1461024757806334c76b251461026757806336568abe1461029d578063485cc955146102bd5780634f1fe501146102dd57806350fe12e8146103205780635416bb111461033357806354fd4d50146103535780637124b99514610367578063715018a614610395575b600080fd5b34801561017e57600080fd5b5061019261018d3660046119fa565b6105a6565b60405190151581526020015b60405180910390f35b3480156101b357600080fd5b506101c76101c2366004611a39565b6105d1565b005b3480156101d557600080fd5b506101c76101e4366004611a56565b6105fb565b3480156101f557600080fd5b50610209610204366004611a56565b61075d565b60405190815260200161019e565b34801561022357600080fd5b50610209610232366004611a82565b60009081526097602052604090206001015490565b34801561025357600080fd5b506101c7610262366004611a9b565b6107bd565b34801561027357600080fd5b506040805180820182526007815266506f6f6c46656560c81b6020820152905161019e9190611b27565b3480156102a957600080fd5b506101c76102b8366004611a9b565b6107e7565b3480156102c957600080fd5b506101c76102d8366004611b3a565b610865565b3480156102e957600080fd5b506103136102f8366004611a39565b60fd602052600090815260409020546001600160a01b031681565b60405161019e9190611b68565b6101c761032e366004611b8e565b6109bd565b34801561033f57600080fd5b506101c761034e366004611bc2565b610a29565b34801561035f57600080fd5b506001610209565b34801561037357600080fd5b50610209610382366004611a39565b6101006020526000908152604090205481565b3480156103a157600080fd5b506101c7610c3b565b3480156103b657600080fd5b506101c76103c5366004611a82565b610c4f565b3480156103d657600080fd5b506101c76103e5366004611c35565b610d28565b3480156103f657600080fd5b50610209610405366004611a39565b60fe6020526000908152604090205481565b34801561042357600080fd5b506033546001600160a01b0316610313565b34801561044157600080fd5b50610313610450366004611c6a565b610e64565b34801561046157600080fd5b50610192610470366004611a9b565b610e83565b34801561048157600080fd5b50610495610490366004611a39565b610eae565b60405161019e9190611c8c565b3480156104ae57600080fd5b50610209600081565b6102096104c5366004611d59565b61103d565b3480156104d657600080fd5b506102096000805160206120fd83398151915281565b3480156104f857600080fd5b50610209610507366004611a39565b60ff6020526000908152604090205481565b34801561052557600080fd5b50610209610534366004611a82565b611200565b34801561054557600080fd5b506101c7610554366004611a9b565b611217565b34801561056557600080fd5b506101c7610574366004611a39565b61123c565b34801561058557600080fd5b50610209610594366004611a39565b60fc6020526000908152604090205481565b60006001600160e01b03198216635a05180f60e01b14806105cb57506105cb826112b5565b92915050565b6105d96112ea565b60fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821660009081526101006020526040902054818110156106765760405162461bcd60e51b815260206004820152602360248201527f776974686472617748616e646c65722062616c616e6365203e3d2077656956616044820152626c756560e81b60648201526084015b60405180910390fd5b6001600160a01b03838116600090815260fd60205260409020541633146106df5760405162461bcd60e51b815260206004820152601d60248201527f776974686472617748616e646c6572206d757374206465706c6f796572000000604482015260640161066d565b6001600160a01b0383166000908152610100602052604081208054849290610708908490611db0565b9091555061071890503383611344565b6040518281526001600160a01b0384169033907f90029a22ae729f21c8d7388fc64a31238390385e78345db17cc4b0badcd02e029060200160405180910390a3505050565b6001600160a01b038216600090815260ff602090815260408083205460fe9092528220548261271061078f8487611dc7565b6107999190611de6565b9050818110156107a65750805b60006107b23a83611dc7565b979650505050505050565b6000828152609760205260409020600101546107d88161145a565b6107e28383611464565b505050565b6001600160a01b03811633146108575760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161066d565b6108618282611486565b5050565b600054610100900460ff16158080156108855750600054600160ff909116105b8061089f5750303b15801561089f575060005460ff166001145b6109025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161066d565b6000805460ff191660011790558015610925576000805461ff0019166101001790555b61092d6114a8565b6109356114cf565b6109406000336114ff565b6109586000805160206120fd833981519152846114ff565b60fb80546001600160a01b0319166001600160a01b03841617905580156107e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b33600090815260fc60205260408120805434928392916109de908490611e08565b90915550506040805163ffffffff841681526020810183905233917f9a8dfdf7d0a585fe5bd50fbea6a5802be1ecb3ca020432959fd63c41a4708f5f91015b60405180910390a25050565b6000805160206120fd833981519152610a418161145a565b6000610a4d888461075d565b905080610a5a5750610c32565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610a8f908d90600401611b68565b60006040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae39190810190611f06565b9150915081610af457505050610c32565b6001600160a01b038916600090815260fc602052604090205483811015610b675760405162461bcd60e51b815260206004820152602160248201527f62696c6c206d757374206c6566744465706f736974203e3d2077656956616c756044820152606560f81b606482015260840161066d565b6001600160a01b038a16600090815260fc602052604081208054869290610b8f908490611db0565b90915550506001600160a01b038b166000908152610100602052604081208054869290610bbd908490611e08565b90915550506040805163ffffffff8b16815261ffff8a81166020830152891681830152606081018890526080810186905290516001600160a01b038c811692908e169133917f0db692ef6ba3074aa3286596b4b10a26749859a4cf5c2fde8e13e21d1d51a3ca919081900360a00190a4505050505b50505050505050565b610c436112ea565b610c4d6000611509565b565b33600090815260fc602052604090205481811015610cc75760405162461bcd60e51b815260206004820152602f60248201527f7769746864726177436c757374657241646d696e4465706f7369742062616c6160448201526e6e6365203e3d2077656956616c756560881b606482015260840161066d565b33600090815260fc602052604081208054849290610ce6908490611db0565b90915550610cf690503383611344565b60405182815233907fc612e83c166a93d246db8ad8a4479b1df1a5029f9a8a4213bad5c27165001ccd90602001610a1d565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610d5d908890600401611b68565b60006040518083038186803b158015610d7557600080fd5b505afa158015610d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610db19190810190611f06565b9150915080608001516001600160a01b0316336001600160a01b031614610e175760405162461bcd60e51b815260206004820152601a6024820152793ab83230ba32a430b7323632b91034b9903737ba1037bbb732b960311b604482015260640161066d565b8115610e5d576001600160a01b038516600090815260fd6020908152604080832080546001600160a01b0319163317905560fe825280832087905560ff90915290208390555b5050505050565b600082815260c960205260408120610e7c908361155b565b9392505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610f1260405180610120016040528060006001600160a01b031681526020016060815260200160608152602001600060ff1681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610f47908790600401611b68565b60006040518083038186803b158015610f5f57600080fd5b505afa158015610f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9b9190810190611f06565b60408051610120810182526060808401516001600160a01b03908116835260208086015181850152848601518486015260a08087015160ff9081169486019490945260c09687015160808601529a8216600081815260fd8352868120549093169b85019b909b528a825260fe815284822054958401959095528981529084528281205460e0830152978852610100928390529620549086015250929392505050565b60008061104a858461075d565b9050806110655761105b3334611344565b6000915050610e7c565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc9061109a908a90600401611b68565b60006040518083038186803b1580156110b257600080fd5b505afa1580156110c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ee9190810190611f06565b91509150816111035760009350505050610e7c565b823410156111645760405162461bcd60e51b815260206004820152602860248201527f6465706f73697448616e646c6572206d73672e76616c7565203e3d2077656956604482015267616c75652046656560c01b606482015260840161066d565b6001600160a01b038716600090815261010060205260408120805485929061118d908490611e08565b90915550506040805160ff881681523460208201529081018690526001600160a01b0388169033907fae30a04b4486ebca1c16d8ca7e32dde68992c653bcc20427ff183ff98cfdd7339060600160405180910390a36111f5336111f08534611db0565b611344565b509095945050505050565b600081815260c9602052604081206105cb90611567565b6000828152609760205260409020600101546112328161145a565b6107e28383611486565b6112446112ea565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066d565b6112b281611509565b50565b60006001600160e01b03198216637965db0b60e01b14806105cb57506301ffc9a760e01b6001600160e01b03198316146105cb565b6033546001600160a01b03163314610c4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b804710156113945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161066d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146113e1576040519150601f19603f3d011682016040523d82523d6000602084013e6113e6565b606091505b50509050806107e25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161066d565b6112b28133611571565b61146e82826115ca565b600082815260c9602052604090206107e29082611650565b6114908282611665565b600082815260c9602052604090206107e290826116cc565b600054610100900460ff16610c4d5760405162461bcd60e51b815260040161066d90611fff565b600054610100900460ff166114f65760405162461bcd60e51b815260040161066d90611fff565b610c4d33611509565b6108618282611464565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610e7c83836116e1565b60006105cb825490565b61157b8282610e83565b610861576115888161170b565b61159383602061171d565b6040516020016115a492919061204a565b60408051601f198184030181529082905262461bcd60e51b825261066d91600401611b27565b6115d48282610e83565b6108615760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561160c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e7c836001600160a01b0384166118b8565b61166f8282610e83565b156108615760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e7c836001600160a01b038416611907565b60008260000182815481106116f8576116f86120b9565b9060005260206000200154905092915050565b60606105cb6001600160a01b03831660145b6060600061172c836002611dc7565b611737906002611e08565b6001600160401b0381111561174e5761174e611e20565b6040519080825280601f01601f191660200182016040528015611778576020820181803683370190505b509050600360fc1b81600081518110611793576117936120b9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117c2576117c26120b9565b60200101906001600160f81b031916908160001a90535060006117e6846002611dc7565b6117f1906001611e08565b90505b6001811115611869576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611825576118256120b9565b1a60f81b82828151811061183b5761183b6120b9565b60200101906001600160f81b031916908160001a90535060049490941c93611862816120cf565b90506117f4565b508315610e7c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161066d565b60008181526001830160205260408120546118ff575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cb565b5060006105cb565b600081815260018301602052604081205480156119f057600061192b600183611db0565b855490915060009061193f90600190611db0565b90508181146119a457600086600001828154811061195f5761195f6120b9565b9060005260206000200154905080876000018481548110611982576119826120b9565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806119b5576119b56120e6565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cb565b60009150506105cb565b600060208284031215611a0c57600080fd5b81356001600160e01b031981168114610e7c57600080fd5b6001600160a01b03811681146112b257600080fd5b600060208284031215611a4b57600080fd5b8135610e7c81611a24565b60008060408385031215611a6957600080fd5b8235611a7481611a24565b946020939093013593505050565b600060208284031215611a9457600080fd5b5035919050565b60008060408385031215611aae57600080fd5b823591506020830135611ac081611a24565b809150509250929050565b60005b83811015611ae6578181015183820152602001611ace565b83811115611af5576000848401525b50505050565b60008151808452611b13816020860160208601611acb565b601f01601f19169290920160200192915050565b602081526000610e7c6020830184611afb565b60008060408385031215611b4d57600080fd5b8235611b5881611a24565b91506020830135611ac081611a24565b6001600160a01b0391909116815260200190565b63ffffffff811681146112b257600080fd5b600060208284031215611ba057600080fd5b8135610e7c81611b7c565b803561ffff81168114611bbd57600080fd5b919050565b60008060008060008060c08789031215611bdb57600080fd5b8635611be681611a24565b95506020870135611bf681611a24565b94506040870135611c0681611b7c565b9350611c1460608801611bab565b9250611c2260808801611bab565b915060a087013590509295509295509295565b600080600060608486031215611c4a57600080fd5b8335611c5581611a24565b95602085013595506040909401359392505050565b60008060408385031215611c7d57600080fd5b50508035926020909101359150565b60208152611ca66020820183516001600160a01b03169052565b60006020830151610120806040850152611cc4610140850183611afb565b91506040850151601f19858403016060860152611ce18382611afb565b9250506060850151611cf8608086018260ff169052565b50608085015160a085015260a0850151611d1d60c08601826001600160a01b03169052565b5060c085015160e085015260e0850151610100818187015280870151838701525050508091505092915050565b60ff811681146112b257600080fd5b600080600060608486031215611d6e57600080fd5b8335611d7981611a24565b92506020840135611d8981611d4a565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b600082821015611dc257611dc2611d9a565b500390565b6000816000190483118215151615611de157611de1611d9a565b500290565b600082611e0357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611e1b57611e1b611d9a565b500190565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611e5857611e58611e20565b60405290565b8051611bbd81611b7c565b600082601f830112611e7a57600080fd5b81516001600160401b0380821115611e9457611e94611e20565b604051601f8301601f19908116603f01168101908282118183101715611ebc57611ebc611e20565b81604052838152866020858801011115611ed557600080fd5b611ee6846020830160208901611acb565b9695505050505050565b8051611bbd81611a24565b8051611bbd81611d4a565b60008060408385031215611f1957600080fd5b82518015158114611f2957600080fd5b60208401519092506001600160401b0380821115611f4657600080fd5b9084019060e08287031215611f5a57600080fd5b611f62611e36565b611f6b83611e5e565b8152602083015182811115611f7f57600080fd5b611f8b88828601611e69565b602083015250604083015182811115611fa357600080fd5b611faf88828601611e69565b604083015250611fc160608401611ef0565b6060820152611fd260808401611ef0565b6080820152611fe360a08401611efb565b60a082015260c083015160c08201528093505050509250929050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161207c816017850160208801611acb565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516120ad816028840160208801611acb565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000816120de576120de611d9a565b506000190190565b634e487b7160e01b600052603160045260246000fdfe0c11b6502bdedf1cef84895f33be7e5ab64e8ebc42f563f38d0575ecc4f6e428a264697066735822122056813d76cffd587321fc7eacd5957285be65f2a737724e1b65159861342e224864736f6c63430008080033",
  "deployedBytecode": "0x60806040526004361061016d5760003560e01c80637e692466116100c75780637e692466146103aa5780637ea336ea146103ca5780638a90723d146103ea5780638da5cb5b146104175780639010d07c1461043557806391d148541461045557806391e45f5e14610475578063a217fddf146104a2578063a80bf443146104b7578063acdea3b6146104ca578063b24f833e146104ec578063ca15c87314610519578063d547741f14610539578063f2fde38b14610559578063fa18df1d1461057957600080fd5b806301ffc9a71461017257806304d61165146101a757806307226ad6146101c95780630c073791146101e9578063248a9ca3146102175780632f2ff15d1461024757806334c76b251461026757806336568abe1461029d578063485cc955146102bd5780634f1fe501146102dd57806350fe12e8146103205780635416bb111461033357806354fd4d50146103535780637124b99514610367578063715018a614610395575b600080fd5b34801561017e57600080fd5b5061019261018d3660046119fa565b6105a6565b60405190151581526020015b60405180910390f35b3480156101b357600080fd5b506101c76101c2366004611a39565b6105d1565b005b3480156101d557600080fd5b506101c76101e4366004611a56565b6105fb565b3480156101f557600080fd5b50610209610204366004611a56565b61075d565b60405190815260200161019e565b34801561022357600080fd5b50610209610232366004611a82565b60009081526097602052604090206001015490565b34801561025357600080fd5b506101c7610262366004611a9b565b6107bd565b34801561027357600080fd5b506040805180820182526007815266506f6f6c46656560c81b6020820152905161019e9190611b27565b3480156102a957600080fd5b506101c76102b8366004611a9b565b6107e7565b3480156102c957600080fd5b506101c76102d8366004611b3a565b610865565b3480156102e957600080fd5b506103136102f8366004611a39565b60fd602052600090815260409020546001600160a01b031681565b60405161019e9190611b68565b6101c761032e366004611b8e565b6109bd565b34801561033f57600080fd5b506101c761034e366004611bc2565b610a29565b34801561035f57600080fd5b506001610209565b34801561037357600080fd5b50610209610382366004611a39565b6101006020526000908152604090205481565b3480156103a157600080fd5b506101c7610c3b565b3480156103b657600080fd5b506101c76103c5366004611a82565b610c4f565b3480156103d657600080fd5b506101c76103e5366004611c35565b610d28565b3480156103f657600080fd5b50610209610405366004611a39565b60fe6020526000908152604090205481565b34801561042357600080fd5b506033546001600160a01b0316610313565b34801561044157600080fd5b50610313610450366004611c6a565b610e64565b34801561046157600080fd5b50610192610470366004611a9b565b610e83565b34801561048157600080fd5b50610495610490366004611a39565b610eae565b60405161019e9190611c8c565b3480156104ae57600080fd5b50610209600081565b6102096104c5366004611d59565b61103d565b3480156104d657600080fd5b506102096000805160206120fd83398151915281565b3480156104f857600080fd5b50610209610507366004611a39565b60ff6020526000908152604090205481565b34801561052557600080fd5b50610209610534366004611a82565b611200565b34801561054557600080fd5b506101c7610554366004611a9b565b611217565b34801561056557600080fd5b506101c7610574366004611a39565b61123c565b34801561058557600080fd5b50610209610594366004611a39565b60fc6020526000908152604090205481565b60006001600160e01b03198216635a05180f60e01b14806105cb57506105cb826112b5565b92915050565b6105d96112ea565b60fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821660009081526101006020526040902054818110156106765760405162461bcd60e51b815260206004820152602360248201527f776974686472617748616e646c65722062616c616e6365203e3d2077656956616044820152626c756560e81b60648201526084015b60405180910390fd5b6001600160a01b03838116600090815260fd60205260409020541633146106df5760405162461bcd60e51b815260206004820152601d60248201527f776974686472617748616e646c6572206d757374206465706c6f796572000000604482015260640161066d565b6001600160a01b0383166000908152610100602052604081208054849290610708908490611db0565b9091555061071890503383611344565b6040518281526001600160a01b0384169033907f90029a22ae729f21c8d7388fc64a31238390385e78345db17cc4b0badcd02e029060200160405180910390a3505050565b6001600160a01b038216600090815260ff602090815260408083205460fe9092528220548261271061078f8487611dc7565b6107999190611de6565b9050818110156107a65750805b60006107b23a83611dc7565b979650505050505050565b6000828152609760205260409020600101546107d88161145a565b6107e28383611464565b505050565b6001600160a01b03811633146108575760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161066d565b6108618282611486565b5050565b600054610100900460ff16158080156108855750600054600160ff909116105b8061089f5750303b15801561089f575060005460ff166001145b6109025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161066d565b6000805460ff191660011790558015610925576000805461ff0019166101001790555b61092d6114a8565b6109356114cf565b6109406000336114ff565b6109586000805160206120fd833981519152846114ff565b60fb80546001600160a01b0319166001600160a01b03841617905580156107e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b33600090815260fc60205260408120805434928392916109de908490611e08565b90915550506040805163ffffffff841681526020810183905233917f9a8dfdf7d0a585fe5bd50fbea6a5802be1ecb3ca020432959fd63c41a4708f5f91015b60405180910390a25050565b6000805160206120fd833981519152610a418161145a565b6000610a4d888461075d565b905080610a5a5750610c32565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610a8f908d90600401611b68565b60006040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae39190810190611f06565b9150915081610af457505050610c32565b6001600160a01b038916600090815260fc602052604090205483811015610b675760405162461bcd60e51b815260206004820152602160248201527f62696c6c206d757374206c6566744465706f736974203e3d2077656956616c756044820152606560f81b606482015260840161066d565b6001600160a01b038a16600090815260fc602052604081208054869290610b8f908490611db0565b90915550506001600160a01b038b166000908152610100602052604081208054869290610bbd908490611e08565b90915550506040805163ffffffff8b16815261ffff8a81166020830152891681830152606081018890526080810186905290516001600160a01b038c811692908e169133917f0db692ef6ba3074aa3286596b4b10a26749859a4cf5c2fde8e13e21d1d51a3ca919081900360a00190a4505050505b50505050505050565b610c436112ea565b610c4d6000611509565b565b33600090815260fc602052604090205481811015610cc75760405162461bcd60e51b815260206004820152602f60248201527f7769746864726177436c757374657241646d696e4465706f7369742062616c6160448201526e6e6365203e3d2077656956616c756560881b606482015260840161066d565b33600090815260fc602052604081208054849290610ce6908490611db0565b90915550610cf690503383611344565b60405182815233907fc612e83c166a93d246db8ad8a4479b1df1a5029f9a8a4213bad5c27165001ccd90602001610a1d565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610d5d908890600401611b68565b60006040518083038186803b158015610d7557600080fd5b505afa158015610d89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610db19190810190611f06565b9150915080608001516001600160a01b0316336001600160a01b031614610e175760405162461bcd60e51b815260206004820152601a6024820152793ab83230ba32a430b7323632b91034b9903737ba1037bbb732b960311b604482015260640161066d565b8115610e5d576001600160a01b038516600090815260fd6020908152604080832080546001600160a01b0319163317905560fe825280832087905560ff90915290208390555b5050505050565b600082815260c960205260408120610e7c908361155b565b9392505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610f1260405180610120016040528060006001600160a01b031681526020016060815260200160608152602001600060ff1681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc90610f47908790600401611b68565b60006040518083038186803b158015610f5f57600080fd5b505afa158015610f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9b9190810190611f06565b60408051610120810182526060808401516001600160a01b03908116835260208086015181850152848601518486015260a08087015160ff9081169486019490945260c09687015160808601529a8216600081815260fd8352868120549093169b85019b909b528a825260fe815284822054958401959095528981529084528281205460e0830152978852610100928390529620549086015250929392505050565b60008061104a858461075d565b9050806110655761105b3334611344565b6000915050610e7c565b60fb546040516330af0bbf60e21b815260009182916001600160a01b039091169063c2bc2efc9061109a908a90600401611b68565b60006040518083038186803b1580156110b257600080fd5b505afa1580156110c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ee9190810190611f06565b91509150816111035760009350505050610e7c565b823410156111645760405162461bcd60e51b815260206004820152602860248201527f6465706f73697448616e646c6572206d73672e76616c7565203e3d2077656956604482015267616c75652046656560c01b606482015260840161066d565b6001600160a01b038716600090815261010060205260408120805485929061118d908490611e08565b90915550506040805160ff881681523460208201529081018690526001600160a01b0388169033907fae30a04b4486ebca1c16d8ca7e32dde68992c653bcc20427ff183ff98cfdd7339060600160405180910390a36111f5336111f08534611db0565b611344565b509095945050505050565b600081815260c9602052604081206105cb90611567565b6000828152609760205260409020600101546112328161145a565b6107e28383611486565b6112446112ea565b6001600160a01b0381166112a95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161066d565b6112b281611509565b50565b60006001600160e01b03198216637965db0b60e01b14806105cb57506301ffc9a760e01b6001600160e01b03198316146105cb565b6033546001600160a01b03163314610c4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066d565b804710156113945760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161066d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146113e1576040519150601f19603f3d011682016040523d82523d6000602084013e6113e6565b606091505b50509050806107e25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161066d565b6112b28133611571565b61146e82826115ca565b600082815260c9602052604090206107e29082611650565b6114908282611665565b600082815260c9602052604090206107e290826116cc565b600054610100900460ff16610c4d5760405162461bcd60e51b815260040161066d90611fff565b600054610100900460ff166114f65760405162461bcd60e51b815260040161066d90611fff565b610c4d33611509565b6108618282611464565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610e7c83836116e1565b60006105cb825490565b61157b8282610e83565b610861576115888161170b565b61159383602061171d565b6040516020016115a492919061204a565b60408051601f198184030181529082905262461bcd60e51b825261066d91600401611b27565b6115d48282610e83565b6108615760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561160c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e7c836001600160a01b0384166118b8565b61166f8282610e83565b156108615760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e7c836001600160a01b038416611907565b60008260000182815481106116f8576116f86120b9565b9060005260206000200154905092915050565b60606105cb6001600160a01b03831660145b6060600061172c836002611dc7565b611737906002611e08565b6001600160401b0381111561174e5761174e611e20565b6040519080825280601f01601f191660200182016040528015611778576020820181803683370190505b509050600360fc1b81600081518110611793576117936120b9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117c2576117c26120b9565b60200101906001600160f81b031916908160001a90535060006117e6846002611dc7565b6117f1906001611e08565b90505b6001811115611869576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611825576118256120b9565b1a60f81b82828151811061183b5761183b6120b9565b60200101906001600160f81b031916908160001a90535060049490941c93611862816120cf565b90506117f4565b508315610e7c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161066d565b60008181526001830160205260408120546118ff575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cb565b5060006105cb565b600081815260018301602052604081205480156119f057600061192b600183611db0565b855490915060009061193f90600190611db0565b90508181146119a457600086600001828154811061195f5761195f6120b9565b9060005260206000200154905080876000018481548110611982576119826120b9565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806119b5576119b56120e6565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cb565b60009150506105cb565b600060208284031215611a0c57600080fd5b81356001600160e01b031981168114610e7c57600080fd5b6001600160a01b03811681146112b257600080fd5b600060208284031215611a4b57600080fd5b8135610e7c81611a24565b60008060408385031215611a6957600080fd5b8235611a7481611a24565b946020939093013593505050565b600060208284031215611a9457600080fd5b5035919050565b60008060408385031215611aae57600080fd5b823591506020830135611ac081611a24565b809150509250929050565b60005b83811015611ae6578181015183820152602001611ace565b83811115611af5576000848401525b50505050565b60008151808452611b13816020860160208601611acb565b601f01601f19169290920160200192915050565b602081526000610e7c6020830184611afb565b60008060408385031215611b4d57600080fd5b8235611b5881611a24565b91506020830135611ac081611a24565b6001600160a01b0391909116815260200190565b63ffffffff811681146112b257600080fd5b600060208284031215611ba057600080fd5b8135610e7c81611b7c565b803561ffff81168114611bbd57600080fd5b919050565b60008060008060008060c08789031215611bdb57600080fd5b8635611be681611a24565b95506020870135611bf681611a24565b94506040870135611c0681611b7c565b9350611c1460608801611bab565b9250611c2260808801611bab565b915060a087013590509295509295509295565b600080600060608486031215611c4a57600080fd5b8335611c5581611a24565b95602085013595506040909401359392505050565b60008060408385031215611c7d57600080fd5b50508035926020909101359150565b60208152611ca66020820183516001600160a01b03169052565b60006020830151610120806040850152611cc4610140850183611afb565b91506040850151601f19858403016060860152611ce18382611afb565b9250506060850151611cf8608086018260ff169052565b50608085015160a085015260a0850151611d1d60c08601826001600160a01b03169052565b5060c085015160e085015260e0850151610100818187015280870151838701525050508091505092915050565b60ff811681146112b257600080fd5b600080600060608486031215611d6e57600080fd5b8335611d7981611a24565b92506020840135611d8981611d4a565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b600082821015611dc257611dc2611d9a565b500390565b6000816000190483118215151615611de157611de1611d9a565b500290565b600082611e0357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611e1b57611e1b611d9a565b500190565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611e5857611e58611e20565b60405290565b8051611bbd81611b7c565b600082601f830112611e7a57600080fd5b81516001600160401b0380821115611e9457611e94611e20565b604051601f8301601f19908116603f01168101908282118183101715611ebc57611ebc611e20565b81604052838152866020858801011115611ed557600080fd5b611ee6846020830160208901611acb565b9695505050505050565b8051611bbd81611a24565b8051611bbd81611d4a565b60008060408385031215611f1957600080fd5b82518015158114611f2957600080fd5b60208401519092506001600160401b0380821115611f4657600080fd5b9084019060e08287031215611f5a57600080fd5b611f62611e36565b611f6b83611e5e565b8152602083015182811115611f7f57600080fd5b611f8b88828601611e69565b602083015250604083015182811115611fa357600080fd5b611faf88828601611e69565b604083015250611fc160608401611ef0565b6060820152611fd260808401611ef0565b6080820152611fe360a08401611efb565b60a082015260c083015160c08201528093505050509250929050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161207c816017850160208801611acb565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516120ad816028840160208801611acb565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000816120de576120de611d9a565b506000190190565b634e487b7160e01b600052603160045260246000fdfe0c11b6502bdedf1cef84895f33be7e5ab64e8ebc42f563f38d0575ecc4f6e428a264697066735822122056813d76cffd587321fc7eacd5957285be65f2a737724e1b65159861342e224864736f6c63430008080033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
