{
    "_format": "hh-sol-artifact-1",
    "contractName": "StakingManager",
    "sourceName": "contracts/StakingManager.sol",
    "abi": [
        {
            "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"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "_runners",
                    "type": "address[]"
                }
            ],
            "name": "batchStakeReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "unbondReqId",
                    "type": "uint256"
                }
            ],
            "name": "cancelUnbonding",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "delegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_source",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "getAfterDelegationAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_source",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "getDelegationAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "getEffectiveTotalStake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_source",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_era",
                    "type": "uint256"
                }
            ],
            "name": "getEraDelegationAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "getSlashableAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "getTotalStakingAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_source",
                    "type": "address"
                }
            ],
            "name": "getUnbondingAmounts",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "indexer",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct UnbondAmount[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "_settings",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_fromRunner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_toRunner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "redelegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "_settings",
                    "type": "address"
                }
            ],
            "name": "setSettings",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "settings",
            "outputs": [
                {
                    "internalType": "contract ISettings",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_indexer",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "slashRunner",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "stake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                }
            ],
            "name": "stakeReward",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "undelegate",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_runner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_amount",
                    "type": "uint256"
                }
            ],
            "name": "unstake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "widthdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50613b5d806100206000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c8063a01d3c2c116100c3578063d49245481161007c578063d4924548146102b6578063ddd0fd0b146102c9578063e06174e4146102dc578063e9260898146102ef578063f2fde38b14610302578063f4494d911461031557600080fd5b8063a01d3c2c14610244578063adc9772e14610257578063af1679a51461026a578063b636ebf61461027d578063c2a672e014610290578063c4d66de8146102a357600080fd5b80632dfd8cdb116101155780632dfd8cdb146101d65780634d99dd16146101e957806352b50a2a146101fc5780636bd8f80414610204578063715018a6146102175780638da5cb5b1461021f57600080fd5b8062756b6014610151578063026e402b1461017a57806308db99ad1461018f5780630a72f2ea146101a25780631c503039146101b5575b600080fd5b61016461015f36600461369b565b610328565b60405161017191906136b8565b60405180910390f35b61018d61018836600461371a565b610673565b005b61018d61019d366004613746565b610acb565b61018d6101b03660046137bb565b610b1f565b6101c86101c33660046137d4565b610f87565b604051908152602001610171565b61018d6101e436600461369b565b61107e565b61018d6101f736600461371a565b61108d565b61018d61118c565b61018d61021236600461380d565b61171f565b61018d6118b9565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610171565b61018d61025236600461369b565b6118cd565b61018d61026536600461371a565b6118f7565b6101c86102783660046137d4565b611bd0565b6101c861028b36600461369b565b611cbd565b61018d61029e36600461371a565b611fb5565b61018d6102b136600461369b565b612308565b6101c86102c436600461369b565b612435565b61018d6102d736600461371a565b612628565b60655461022c906001600160a01b031681565b6101c86102fd36600461369b565b612827565b61018d61031036600461369b565b612a26565b6101c861032336600461380d565b612a9c565b60655460405163f4e5699160e01b81526060916000916001600160a01b039091169063f4e569919061035f90600190600401613864565b602060405180830381865afa15801561037c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a0919061387e565b604051637d52ab6560e01b81526001600160a01b038581166004830152919250600091831690637d52ab6590602401602060405180830381865afa1580156103ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610410919061389b565b60405163186543ab60e01b81526001600160a01b03868116600483015284169063186543ab90602401602060405180830381865afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a919061389b565b61048491906138ca565b905060008167ffffffffffffffff8111156104a1576104a16138e1565b6040519080825280602002602001820160405280156104ff57816020015b6104ec604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816104bf5790505b50604051637d52ab6560e01b81526001600160a01b038781166004830152919250600091829190861690637d52ab6590602401602060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610573919061389b565b9050805b61058185836138f7565b811015610667576000806000886001600160a01b031663c1fcdd728c866040518363ffffffff1660e01b81526004016105bb92919061390f565b606060405180830381865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190613928565b9250925092506040518060600160405280846001600160a01b03168152602001838152602001828152508787815181106106385761063861395f565b6020026020010181905250858061064e90613975565b965050505050808061065f90613975565b915050610577565b50919695505050505050565b6001600160a01b03821633036106a45760405162461bcd60e51b815260040161069b9061398e565b60405180910390fd5b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906106d690600190600401613864565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610717919061387e565b60405163240fbc8960e11b81529091506001600160a01b0382169063481f791290610748908690869060040161390f565b60006040518083038186803b15801561076057600080fd5b505afa158015610774573d6000803e3d6000fd5b5050604051632dabd7f160e21b81526001600160a01b038416925063b6af5fc491506107a6903390869060040161390f565b600060405180830381600087803b1580156107c057600080fd5b505af11580156107d4573d6000803e3d6000fd5b5050505060006107e2612aa9565b90506000826001600160a01b0316634a0bc2576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610848919061389b565b90506000808211801561085b5750818311155b9050806108cf57604051634f069fed60e01b81526001600160a01b03851690634f069fed906108959033908a908a906000906004016139ac565b600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b50505050505050505050565b60006108da33612c27565b905080861161096157604051634f069fed60e01b81526001600160a01b03861690634f069fed906109169033908b908b906001906004016139ac565b600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506109523388612df7565b61095c3387612e9b565b610ac2565b8015610a5c5780600061097482896138ca565b604051634f069fed60e01b81529091506001600160a01b03881690634f069fed906109aa9033908d9087906001906004016139ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050506109e6338a612df7565b6109f03383612e9b565b604051634f069fed60e01b81526001600160a01b03881690634f069fed90610a239033908d9086906000906004016139ac565b600060405180830381600087803b158015610a3d57600080fd5b505af1158015610a51573d6000803e3d6000fd5b505050505050610ac2565b604051634f069fed60e01b81526001600160a01b03861690634f069fed90610a8f9033908b908b906000906004016139ac565b600060405180830381600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050505b50505050505050565b60005b81811015610b1a57610b0833848484818110610aec57610aec61395f565b9050602002016020810190610b01919061369b565b600161302c565b80610b1281613975565b915050610ace565b505050565b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e5699190610b5090600590600401613864565b602060405180830381865afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b91919061387e565b6001600160a01b0316636c376cc56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf491906139d5565b15610c2a5760405162461bcd60e51b815260040161069b906020808252600490820152634730313960e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190610c5c90600190600401613864565b602060405180830381865afa158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9d919061387e565b604051637d52ab6560e01b81523360048201529091506001600160a01b03821690637d52ab6590602401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d08919061389b565b821015610d275760405162461bcd60e51b815260040161069b906139f7565b600080826001600160a01b031663c1fcdd7233866040518363ffffffff1660e01b8152600401610d5892919061390f565b606060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d999190613928565b509150915060008111610dbe5760405162461bcd60e51b815260040161069b906139f7565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190610df090600390600401613864565b602060405180830381865afa158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e31919061387e565b6040516316367a7160e11b81526001600160a01b03858116600483015291925090821690632c6cf4e290602401602060405180830381865afa158015610e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f91906139d5565b610ebb5760405162461bcd60e51b815260040161069b906139f7565b60405163076effa560e31b81526001600160a01b03851690633b77fd2890610ee9903390899060040161390f565b600060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0387169250634f069fed9150610f4e903390879087906000906004016139ac565b600060405180830381600087803b158015610f6857600080fd5b505af1158015610f7c573d6000803e3d6000fd5b505050505050505050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190610fbd90600190600401613864565b602060405180830381865afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe919061387e565b90506000816001600160a01b031663046d330786866040518363ffffffff1660e01b8152600401611030929190613a15565b606060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190613a2f565b9450505050505b92915050565b61108a3382600061302c565b50565b336001600160a01b038316036110b55760405162461bcd60e51b815260040161069b9061398e565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906110e790600190600401613864565b602060405180830381865afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611128919061387e565b604051633c004ae560e01b81529091506001600160a01b03821690633c004ae59061115e90339087908790600090600401613a5d565b600060405180830381600087803b15801561117857600080fd5b505af1158015610ac2573d6000803e3d6000fd5b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e56991906111bd90600590600401613864565b602060405180830381865afa1580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe919061387e565b6001600160a01b0316636c376cc56040518163ffffffff1660e01b81526004016020604051808303816000875af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126191906139d5565b156112975760405162461bcd60e51b815260040161069b906020808252600490820152634730313960e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906112c990600190600401613864565b602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a919061387e565b60655460405163f4e5699160e01b81529192506001600160a01b03169063f4e569919061133c90600e90600401613864565b602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061387e565b60405163135a80a160e11b81523360048201526001600160a01b0391909116906326b50142906024016020604051808303816000875af11580156113c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e991906139d5565b1561141f5760405162461bcd60e51b815260040161069b906020808252600490820152632398181b60e11b604082015260600190565b604051637d52ab6560e01b81523360048201526000906001600160a01b03831690637d52ab6590602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a919061389b565b60405163186543ab60e01b81523360048201526001600160a01b0384169063186543ab90602401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061389b565b6114fc91906138ca565b9050600081116115375760405162461bcd60e51b815260040161069b906020808252600490820152635330303960e01b604082015260600190565b604051637d52ab6560e01b81523360048201526000906001600160a01b03841690637d52ab6590602401602060405180830381865afa15801561157e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a2919061389b565b9050805b6115b083836138f7565b811015611719576040516360fe6eb960e11b81526000906001600160a01b0386169063c1fcdd72906115e8903390869060040161390f565b606060405180830381865afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190613928565b92505050846001600160a01b0316633fd8b02f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168f919061389b565b61169982426138ca565b10156116a55750611719565b60405163bf70914960e01b81526001600160a01b0386169063bf709149906116d3903390869060040161390f565b600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b5050505050808061171190613975565b9150506115a6565b50505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061175190600190600401613864565b602060405180830381865afa15801561176e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611792919061387e565b9050336001600160a01b0385168190036117be5760405162461bcd60e51b815260040161069b9061398e565b60405163240fbc8960e11b81526001600160a01b0383169063481f7912906117ec908790879060040161390f565b60006040518083038186803b15801561180457600080fd5b505afa158015611818573d6000803e3d6000fd5b505060405163b939ae1d60e01b81526001600160a01b0384811660048301528881166024830152604482018790528516925063b939ae1d9150606401600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0385169250634f069fed9150610f4e908490889088906000906004016139ac565b6118c1613401565b6118cb600061345b565b565b6118d5613401565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061192990600190600401613864565b602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a919061387e565b60405163d87db88560e01b81529091506001600160a01b0382169063d87db8859061199b9086908190600401613a15565b602060405180830381865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc91906139d5565b15611afc5760655460405163f4e5699160e01b81526001600160a01b039091169063f4e5699190611a1290600390600401613864565b602060405180830381865afa158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a53919061387e565b6001600160a01b0316336001600160a01b031614611a9c5760405162461bcd60e51b815260040161069b906020808252600490820152634730303160e01b604082015260600190565b604051635eb2af3d60e11b81526001600160a01b03848116600483015282169063bd655e7a90602401600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b50505050611b3d565b336001600160a01b03841614611b3d5760405162461bcd60e51b815260040161069b906020808252600490820152632398181960e11b604082015260600190565b604051632dabd7f160e21b81526001600160a01b0382169063b6af5fc490611b6b908690869060040161390f565b600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0384169250634f069fed915061115e908690819087906000906004016139ac565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190611c0690600590600401613864565b602060405180830381865afa158015611c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c47919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca8919061389b565b9050611cb58484836134ad565b949350505050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190611cf390600190600401613864565b602060405180830381865afa158015611d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d34919061387e565b90506000816001600160a01b031663046d330785866040518363ffffffff1660e01b8152600401611d66929190613a15565b606060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da79190613a2f565b604051637d52ab6560e01b81526001600160a01b038881166004830152919450600093509085169150637d52ab6590602401602060405180830381865afa158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a919061389b565b60405163186543ab60e01b81526001600160a01b03878116600483015285169063186543ab90602401602060405180830381865afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e84919061389b565b611e8e91906138ca565b604051637d52ab6560e01b81526001600160a01b038781166004830152919250600091851690637d52ab6590602401602060405180830381865afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe919061389b565b9050805b611f0c83836138f7565b811015611faa576040516360fe6eb960e11b81526000906001600160a01b0387169063c1fcdd7290611f44908b90869060040161390f565b606060405180830381865afa158015611f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f859190613928565b509150611f94905081866138f7565b9450508080611fa290613975565b915050611f02565b509195945050505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190611fe790600190600401613864565b602060405180830381865afa158015612004573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612028919061387e565b60655460405163f4e5699160e01b81529192506001600160a01b03169063f4e569919061205a90600390600401613864565b602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b919061387e565b6001600160a01b0316330361210a5760405163818aa4df60e01b81526001600160a01b03848116600483015282169063818aa4df90602401600060405180830381600087803b1580156120ed57600080fd5b505af1158015612101573d6000803e3d6000fd5b505050506122d5565b336001600160a01b0384161461214b5760405162461bcd60e51b815260040161069b906020808252600490820152632398181960e11b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061217d90600390600401613864565b602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be919061387e565b6001600160a01b031663b0d2d0116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f919061389b565b604051631c50303960e01b815290915060009084903090631c5030399061224c9089908190600401613a15565b602060405180830381865afa158015612269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228d919061389b565b61229791906138ca565b9050818110156122d25760405162461bcd60e51b815260040161069b906020808252600490820152630a66060760e31b604082015260600190565b50505b604051633c004ae560e01b81526001600160a01b03821690633c004ae59061115e90869081908790600190600401613a5d565b600054610100900460ff16158080156123285750600054600160ff909116105b806123425750303b158015612342575060005460ff166001145b6123a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161069b565b6000805460ff1916600117905580156123c8576000805461ff0019166101001790555b6123d06135d6565b606580546001600160a01b0319166001600160a01b0384161790558015612431576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e569919061246b90600590600401613864565b602060405180830381865afa158015612488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ac919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d919061389b565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e569919061254490600190600401613864565b602060405180830381865afa158015612561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612585919061387e565b9050600061259285612827565b905060006125a18687866134ad565b90506000836001600160a01b031663dea25a946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612607919061389b565b6126119083613a9b565b905061261d8382613605565b979650505050505050565b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e569919061265990600e90600401613864565b602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a919061387e565b6001600160a01b0316336001600160a01b0316146126e35760405162461bcd60e51b815260040161069b906020808252600490820152634730303560e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061271590600190600401613864565b602060405180830381865afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612756919061387e565b604051635b1b75fb60e11b81526001600160a01b0385166004820152909150309063b636ebf690602401602060405180830381865afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c1919061389b565b8211156127f95760405162461bcd60e51b815260040161069b906020808252600490820152630533031360e41b604082015260600190565b60405163ddd0fd0b60e01b81526001600160a01b0382169063ddd0fd0b9061115e908690869060040161390f565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e569919061285d90600590600401613864565b602060405180830381865afa15801561287a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289e919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ff919061389b565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e569919061293690600190600401613864565b602060405180830381865afa158015612953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612977919061387e565b604051638715937f60e01b81526001600160a01b03868116600483015291925060009182918291851690638715937f90602401606060405180830381865afa1580156129c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129eb9190613a2f565b92509250925060006040518060600160405280858152602001848152602001838152509050612a1a818761361d565b98975050505050505050565b612a2e613401565b6001600160a01b038116612a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069b565b61108a8161345b565b6000611cb58484846134ad565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190612adf90600590600401613864565b602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b20919061387e565b90506000816001600160a01b031663234017636040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b86919061389b565b90506000826001600160a01b031663ba08553a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec919061389b565b90506000612bfa83426138ca565b9050818110612c1057620f424094505050505090565b612c1e81620f42408461363f565b94505050505090565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190612c5d90600590600401613864565b602060405180830381865afa158015612c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9e919061387e565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e5699190612cd590600190600401613864565b602060405180830381865afa158015612cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d16919061387e565b90506000826001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7c919061389b565b60405163bb446b0760e01b81529091506001600160a01b0383169063bb446b0790612dad908890859060040161390f565b602060405180830381865afa158015612dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dee919061389b565b95945050505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190612e2990600a90600401613864565b602060405180830381865afa158015612e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6a919061387e565b60405163d8b3219360e01b81529091506001600160a01b0382169063d8b321939061115e9085908790600401613a15565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190612ecd90600590600401613864565b602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e919061387e565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e5699190612f4590600190600401613864565b602060405180830381865afa158015612f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f86919061387e565b90506000826001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fec919061389b565b60405163f1643b3360e01b81526001600160a01b03878116600483015260248201839052604482018790529192509083169063f1643b3390606401610f4e565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061305e90600190600401613864565b602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f919061387e565b90508180156131115750604051631c50303960e01b81523090631c503039906130ce9086908190600401613a15565b602060405180830381865afa1580156130eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310f919061389b565b155b1561311c5750505050565b604051631c50303960e01b81526000903090631c503039906131449087908190600401613a15565b602060405180830381865afa158015613161573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613185919061389b565b116131bb5760405162461bcd60e51b815260040161069b906020808252600490820152632998189960e11b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906131ed90600890600401613864565b602060405180830381865afa15801561320a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322e919061387e565b90506000816001600160a01b0316635949fc2c86886040518363ffffffff1660e01b8152600401613260929190613a15565b6020604051808303816000875af115801561327f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a3919061389b565b90508380156132b0575080155b156132bd57505050505050565b600081116132f65760405162461bcd60e51b815260040161069b906020808252600490820152635330313160e01b604082015260600190565b604051634f069fed60e01b81526001600160a01b03841690634f069fed90613329908990899086906001906004016139ac565b600060405180830381600087803b15801561334357600080fd5b505af1158015613357573d6000803e3d6000fd5b505060655460405163f4e5699160e01b8152600093506001600160a01b03909116915063f4e569919061338f90600a90600401613864565b602060405180830381865afa1580156133ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d0919061387e565b60405163d8b3219360e01b81529091506001600160a01b0382169063d8b3219390610a8f9089908b90600401613a15565b6033546001600160a01b031633146118cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e56991906134e390600190600401613864565b602060405180830381865afa158015613500573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613524919061387e565b90506000806000836001600160a01b031663046d330789896040518363ffffffff1660e01b8152600401613559929190613a15565b606060405180830381865afa158015613576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359a9190613a2f565b925092509250600060405180606001604052808581526020018481526020018381525090506135c9818861361d565b9998505050505050505050565b600054610100900460ff166135fd5760405162461bcd60e51b815260040161069b90613aba565b6118cb613656565b60008183116136145782613616565b815b9392505050565b6000818360000151101561363657506040820151611078565b50506020015190565b60008161364c8486613a9b565b611cb59190613b05565b600054610100900460ff1661367d5760405162461bcd60e51b815260040161069b90613aba565b6118cb3361345b565b6001600160a01b038116811461108a57600080fd5b6000602082840312156136ad57600080fd5b813561361681613686565b602080825282518282018190526000919060409081850190868401855b8281101561370d57815180516001600160a01b03168552868101518786015285015185850152606090930192908501906001016136d5565b5091979650505050505050565b6000806040838503121561372d57600080fd5b823561373881613686565b946020939093013593505050565b6000806020838503121561375957600080fd5b823567ffffffffffffffff8082111561377157600080fd5b818501915085601f83011261378557600080fd5b81358181111561379457600080fd5b8660208260051b85010111156137a957600080fd5b60209290920196919550909350505050565b6000602082840312156137cd57600080fd5b5035919050565b600080604083850312156137e757600080fd5b82356137f281613686565b9150602083013561380281613686565b809150509250929050565b60008060006060848603121561382257600080fd5b833561382d81613686565b9250602084013561383d81613686565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b60208101601583106138785761387861384e565b91905290565b60006020828403121561389057600080fd5b815161361681613686565b6000602082840312156138ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156138dc576138dc6138b4565b500390565b634e487b7160e01b600052604160045260246000fd5b6000821982111561390a5761390a6138b4565b500190565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561393d57600080fd5b835161394881613686565b602085015160409095015190969495509392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201613987576139876138b4565b5060010190565b60208082526004908201526311cc0c0d60e21b604082015260600190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6000602082840312156139e757600080fd5b8151801515811461361657600080fd5b6020808252600490820152635330303760e01b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b600080600060608486031215613a4457600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b03858116825284166020820152604081018390526080810160048310613a8c57613a8c61384e565b82606083015295945050505050565b6000816000190483118215151615613ab557613ab56138b4565b500290565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082613b2257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b2520e54599f50dd9223aa15fd2a49f4b8080938b4b0282c6d0e4a59fcc61cfe64736f6c634300080f0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014c5760003560e01c8063a01d3c2c116100c3578063d49245481161007c578063d4924548146102b6578063ddd0fd0b146102c9578063e06174e4146102dc578063e9260898146102ef578063f2fde38b14610302578063f4494d911461031557600080fd5b8063a01d3c2c14610244578063adc9772e14610257578063af1679a51461026a578063b636ebf61461027d578063c2a672e014610290578063c4d66de8146102a357600080fd5b80632dfd8cdb116101155780632dfd8cdb146101d65780634d99dd16146101e957806352b50a2a146101fc5780636bd8f80414610204578063715018a6146102175780638da5cb5b1461021f57600080fd5b8062756b6014610151578063026e402b1461017a57806308db99ad1461018f5780630a72f2ea146101a25780631c503039146101b5575b600080fd5b61016461015f36600461369b565b610328565b60405161017191906136b8565b60405180910390f35b61018d61018836600461371a565b610673565b005b61018d61019d366004613746565b610acb565b61018d6101b03660046137bb565b610b1f565b6101c86101c33660046137d4565b610f87565b604051908152602001610171565b61018d6101e436600461369b565b61107e565b61018d6101f736600461371a565b61108d565b61018d61118c565b61018d61021236600461380d565b61171f565b61018d6118b9565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610171565b61018d61025236600461369b565b6118cd565b61018d61026536600461371a565b6118f7565b6101c86102783660046137d4565b611bd0565b6101c861028b36600461369b565b611cbd565b61018d61029e36600461371a565b611fb5565b61018d6102b136600461369b565b612308565b6101c86102c436600461369b565b612435565b61018d6102d736600461371a565b612628565b60655461022c906001600160a01b031681565b6101c86102fd36600461369b565b612827565b61018d61031036600461369b565b612a26565b6101c861032336600461380d565b612a9c565b60655460405163f4e5699160e01b81526060916000916001600160a01b039091169063f4e569919061035f90600190600401613864565b602060405180830381865afa15801561037c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a0919061387e565b604051637d52ab6560e01b81526001600160a01b038581166004830152919250600091831690637d52ab6590602401602060405180830381865afa1580156103ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610410919061389b565b60405163186543ab60e01b81526001600160a01b03868116600483015284169063186543ab90602401602060405180830381865afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a919061389b565b61048491906138ca565b905060008167ffffffffffffffff8111156104a1576104a16138e1565b6040519080825280602002602001820160405280156104ff57816020015b6104ec604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816104bf5790505b50604051637d52ab6560e01b81526001600160a01b038781166004830152919250600091829190861690637d52ab6590602401602060405180830381865afa15801561054f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610573919061389b565b9050805b61058185836138f7565b811015610667576000806000886001600160a01b031663c1fcdd728c866040518363ffffffff1660e01b81526004016105bb92919061390f565b606060405180830381865afa1580156105d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190613928565b9250925092506040518060600160405280846001600160a01b03168152602001838152602001828152508787815181106106385761063861395f565b6020026020010181905250858061064e90613975565b965050505050808061065f90613975565b915050610577565b50919695505050505050565b6001600160a01b03821633036106a45760405162461bcd60e51b815260040161069b9061398e565b60405180910390fd5b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906106d690600190600401613864565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610717919061387e565b60405163240fbc8960e11b81529091506001600160a01b0382169063481f791290610748908690869060040161390f565b60006040518083038186803b15801561076057600080fd5b505afa158015610774573d6000803e3d6000fd5b5050604051632dabd7f160e21b81526001600160a01b038416925063b6af5fc491506107a6903390869060040161390f565b600060405180830381600087803b1580156107c057600080fd5b505af11580156107d4573d6000803e3d6000fd5b5050505060006107e2612aa9565b90506000826001600160a01b0316634a0bc2576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610848919061389b565b90506000808211801561085b5750818311155b9050806108cf57604051634f069fed60e01b81526001600160a01b03851690634f069fed906108959033908a908a906000906004016139ac565b600060405180830381600087803b1580156108af57600080fd5b505af11580156108c3573d6000803e3d6000fd5b50505050505050505050565b60006108da33612c27565b905080861161096157604051634f069fed60e01b81526001600160a01b03861690634f069fed906109169033908b908b906001906004016139ac565b600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506109523388612df7565b61095c3387612e9b565b610ac2565b8015610a5c5780600061097482896138ca565b604051634f069fed60e01b81529091506001600160a01b03881690634f069fed906109aa9033908d9087906001906004016139ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050506109e6338a612df7565b6109f03383612e9b565b604051634f069fed60e01b81526001600160a01b03881690634f069fed90610a239033908d9086906000906004016139ac565b600060405180830381600087803b158015610a3d57600080fd5b505af1158015610a51573d6000803e3d6000fd5b505050505050610ac2565b604051634f069fed60e01b81526001600160a01b03861690634f069fed90610a8f9033908b908b906000906004016139ac565b600060405180830381600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050505b50505050505050565b60005b81811015610b1a57610b0833848484818110610aec57610aec61395f565b9050602002016020810190610b01919061369b565b600161302c565b80610b1281613975565b915050610ace565b505050565b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e5699190610b5090600590600401613864565b602060405180830381865afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b91919061387e565b6001600160a01b0316636c376cc56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf491906139d5565b15610c2a5760405162461bcd60e51b815260040161069b906020808252600490820152634730313960e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190610c5c90600190600401613864565b602060405180830381865afa158015610c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9d919061387e565b604051637d52ab6560e01b81523360048201529091506001600160a01b03821690637d52ab6590602401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d08919061389b565b821015610d275760405162461bcd60e51b815260040161069b906139f7565b600080826001600160a01b031663c1fcdd7233866040518363ffffffff1660e01b8152600401610d5892919061390f565b606060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d999190613928565b509150915060008111610dbe5760405162461bcd60e51b815260040161069b906139f7565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190610df090600390600401613864565b602060405180830381865afa158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e31919061387e565b6040516316367a7160e11b81526001600160a01b03858116600483015291925090821690632c6cf4e290602401602060405180830381865afa158015610e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f91906139d5565b610ebb5760405162461bcd60e51b815260040161069b906139f7565b60405163076effa560e31b81526001600160a01b03851690633b77fd2890610ee9903390899060040161390f565b600060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0387169250634f069fed9150610f4e903390879087906000906004016139ac565b600060405180830381600087803b158015610f6857600080fd5b505af1158015610f7c573d6000803e3d6000fd5b505050505050505050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190610fbd90600190600401613864565b602060405180830381865afa158015610fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffe919061387e565b90506000816001600160a01b031663046d330786866040518363ffffffff1660e01b8152600401611030929190613a15565b606060405180830381865afa15801561104d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110719190613a2f565b9450505050505b92915050565b61108a3382600061302c565b50565b336001600160a01b038316036110b55760405162461bcd60e51b815260040161069b9061398e565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906110e790600190600401613864565b602060405180830381865afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611128919061387e565b604051633c004ae560e01b81529091506001600160a01b03821690633c004ae59061115e90339087908790600090600401613a5d565b600060405180830381600087803b15801561117857600080fd5b505af1158015610ac2573d6000803e3d6000fd5b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e56991906111bd90600590600401613864565b602060405180830381865afa1580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe919061387e565b6001600160a01b0316636c376cc56040518163ffffffff1660e01b81526004016020604051808303816000875af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126191906139d5565b156112975760405162461bcd60e51b815260040161069b906020808252600490820152634730313960e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906112c990600190600401613864565b602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a919061387e565b60655460405163f4e5699160e01b81529192506001600160a01b03169063f4e569919061133c90600e90600401613864565b602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061387e565b60405163135a80a160e11b81523360048201526001600160a01b0391909116906326b50142906024016020604051808303816000875af11580156113c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e991906139d5565b1561141f5760405162461bcd60e51b815260040161069b906020808252600490820152632398181b60e11b604082015260600190565b604051637d52ab6560e01b81523360048201526000906001600160a01b03831690637d52ab6590602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a919061389b565b60405163186543ab60e01b81523360048201526001600160a01b0384169063186543ab90602401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f2919061389b565b6114fc91906138ca565b9050600081116115375760405162461bcd60e51b815260040161069b906020808252600490820152635330303960e01b604082015260600190565b604051637d52ab6560e01b81523360048201526000906001600160a01b03841690637d52ab6590602401602060405180830381865afa15801561157e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a2919061389b565b9050805b6115b083836138f7565b811015611719576040516360fe6eb960e11b81526000906001600160a01b0386169063c1fcdd72906115e8903390869060040161390f565b606060405180830381865afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190613928565b92505050846001600160a01b0316633fd8b02f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168f919061389b565b61169982426138ca565b10156116a55750611719565b60405163bf70914960e01b81526001600160a01b0386169063bf709149906116d3903390869060040161390f565b600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b5050505050808061171190613975565b9150506115a6565b50505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061175190600190600401613864565b602060405180830381865afa15801561176e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611792919061387e565b9050336001600160a01b0385168190036117be5760405162461bcd60e51b815260040161069b9061398e565b60405163240fbc8960e11b81526001600160a01b0383169063481f7912906117ec908790879060040161390f565b60006040518083038186803b15801561180457600080fd5b505afa158015611818573d6000803e3d6000fd5b505060405163b939ae1d60e01b81526001600160a01b0384811660048301528881166024830152604482018790528516925063b939ae1d9150606401600060405180830381600087803b15801561186e57600080fd5b505af1158015611882573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0385169250634f069fed9150610f4e908490889088906000906004016139ac565b6118c1613401565b6118cb600061345b565b565b6118d5613401565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061192990600190600401613864565b602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a919061387e565b60405163d87db88560e01b81529091506001600160a01b0382169063d87db8859061199b9086908190600401613a15565b602060405180830381865afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc91906139d5565b15611afc5760655460405163f4e5699160e01b81526001600160a01b039091169063f4e5699190611a1290600390600401613864565b602060405180830381865afa158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a53919061387e565b6001600160a01b0316336001600160a01b031614611a9c5760405162461bcd60e51b815260040161069b906020808252600490820152634730303160e01b604082015260600190565b604051635eb2af3d60e11b81526001600160a01b03848116600483015282169063bd655e7a90602401600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b50505050611b3d565b336001600160a01b03841614611b3d5760405162461bcd60e51b815260040161069b906020808252600490820152632398181960e11b604082015260600190565b604051632dabd7f160e21b81526001600160a01b0382169063b6af5fc490611b6b908690869060040161390f565b600060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b5050604051634f069fed60e01b81526001600160a01b0384169250634f069fed915061115e908690819087906000906004016139ac565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190611c0690600590600401613864565b602060405180830381865afa158015611c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c47919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca8919061389b565b9050611cb58484836134ad565b949350505050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190611cf390600190600401613864565b602060405180830381865afa158015611d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d34919061387e565b90506000816001600160a01b031663046d330785866040518363ffffffff1660e01b8152600401611d66929190613a15565b606060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da79190613a2f565b604051637d52ab6560e01b81526001600160a01b038881166004830152919450600093509085169150637d52ab6590602401602060405180830381865afa158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a919061389b565b60405163186543ab60e01b81526001600160a01b03878116600483015285169063186543ab90602401602060405180830381865afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e84919061389b565b611e8e91906138ca565b604051637d52ab6560e01b81526001600160a01b038781166004830152919250600091851690637d52ab6590602401602060405180830381865afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe919061389b565b9050805b611f0c83836138f7565b811015611faa576040516360fe6eb960e11b81526000906001600160a01b0387169063c1fcdd7290611f44908b90869060040161390f565b606060405180830381865afa158015611f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f859190613928565b509150611f94905081866138f7565b9450508080611fa290613975565b915050611f02565b509195945050505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190611fe790600190600401613864565b602060405180830381865afa158015612004573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612028919061387e565b60655460405163f4e5699160e01b81529192506001600160a01b03169063f4e569919061205a90600390600401613864565b602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b919061387e565b6001600160a01b0316330361210a5760405163818aa4df60e01b81526001600160a01b03848116600483015282169063818aa4df90602401600060405180830381600087803b1580156120ed57600080fd5b505af1158015612101573d6000803e3d6000fd5b505050506122d5565b336001600160a01b0384161461214b5760405162461bcd60e51b815260040161069b906020808252600490820152632398181960e11b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061217d90600390600401613864565b602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be919061387e565b6001600160a01b031663b0d2d0116040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221f919061389b565b604051631c50303960e01b815290915060009084903090631c5030399061224c9089908190600401613a15565b602060405180830381865afa158015612269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228d919061389b565b61229791906138ca565b9050818110156122d25760405162461bcd60e51b815260040161069b906020808252600490820152630a66060760e31b604082015260600190565b50505b604051633c004ae560e01b81526001600160a01b03821690633c004ae59061115e90869081908790600190600401613a5d565b600054610100900460ff16158080156123285750600054600160ff909116105b806123425750303b158015612342575060005460ff166001145b6123a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161069b565b6000805460ff1916600117905580156123c8576000805461ff0019166101001790555b6123d06135d6565b606580546001600160a01b0319166001600160a01b0384161790558015612431576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e569919061246b90600590600401613864565b602060405180830381865afa158015612488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ac919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d919061389b565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e569919061254490600190600401613864565b602060405180830381865afa158015612561573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612585919061387e565b9050600061259285612827565b905060006125a18687866134ad565b90506000836001600160a01b031663dea25a946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612607919061389b565b6126119083613a9b565b905061261d8382613605565b979650505050505050565b60655460405163f4e5699160e01b81526001600160a01b039091169063f4e569919061265990600e90600401613864565b602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a919061387e565b6001600160a01b0316336001600160a01b0316146126e35760405162461bcd60e51b815260040161069b906020808252600490820152634730303560e01b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061271590600190600401613864565b602060405180830381865afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612756919061387e565b604051635b1b75fb60e11b81526001600160a01b0385166004820152909150309063b636ebf690602401602060405180830381865afa15801561279d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c1919061389b565b8211156127f95760405162461bcd60e51b815260040161069b906020808252600490820152630533031360e41b604082015260600190565b60405163ddd0fd0b60e01b81526001600160a01b0382169063ddd0fd0b9061115e908690869060040161390f565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e569919061285d90600590600401613864565b602060405180830381865afa15801561287a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289e919061387e565b6001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ff919061389b565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e569919061293690600190600401613864565b602060405180830381865afa158015612953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612977919061387e565b604051638715937f60e01b81526001600160a01b03868116600483015291925060009182918291851690638715937f90602401606060405180830381865afa1580156129c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129eb9190613a2f565b92509250925060006040518060600160405280858152602001848152602001838152509050612a1a818761361d565b98975050505050505050565b612a2e613401565b6001600160a01b038116612a935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069b565b61108a8161345b565b6000611cb58484846134ad565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190612adf90600590600401613864565b602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b20919061387e565b90506000816001600160a01b031663234017636040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b86919061389b565b90506000826001600160a01b031663ba08553a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec919061389b565b90506000612bfa83426138ca565b9050818110612c1057620f424094505050505090565b612c1e81620f42408461363f565b94505050505090565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e5699190612c5d90600590600401613864565b602060405180830381865afa158015612c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9e919061387e565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e5699190612cd590600190600401613864565b602060405180830381865afa158015612cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d16919061387e565b90506000826001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7c919061389b565b60405163bb446b0760e01b81529091506001600160a01b0383169063bb446b0790612dad908890859060040161390f565b602060405180830381865afa158015612dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dee919061389b565b95945050505050565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190612e2990600a90600401613864565b602060405180830381865afa158015612e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6a919061387e565b60405163d8b3219360e01b81529091506001600160a01b0382169063d8b321939061115e9085908790600401613a15565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e5699190612ecd90600590600401613864565b602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e919061387e565b60655460405163f4e5699160e01b81529192506000916001600160a01b039091169063f4e5699190612f4590600190600401613864565b602060405180830381865afa158015612f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f86919061387e565b90506000826001600160a01b0316637d884c746040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fec919061389b565b60405163f1643b3360e01b81526001600160a01b03878116600483015260248201839052604482018790529192509083169063f1643b3390606401610f4e565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e569919061305e90600190600401613864565b602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f919061387e565b90508180156131115750604051631c50303960e01b81523090631c503039906130ce9086908190600401613a15565b602060405180830381865afa1580156130eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310f919061389b565b155b1561311c5750505050565b604051631c50303960e01b81526000903090631c503039906131449087908190600401613a15565b602060405180830381865afa158015613161573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613185919061389b565b116131bb5760405162461bcd60e51b815260040161069b906020808252600490820152632998189960e11b604082015260600190565b60655460405163f4e5699160e01b81526000916001600160a01b03169063f4e56991906131ed90600890600401613864565b602060405180830381865afa15801561320a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322e919061387e565b90506000816001600160a01b0316635949fc2c86886040518363ffffffff1660e01b8152600401613260929190613a15565b6020604051808303816000875af115801561327f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a3919061389b565b90508380156132b0575080155b156132bd57505050505050565b600081116132f65760405162461bcd60e51b815260040161069b906020808252600490820152635330313160e01b604082015260600190565b604051634f069fed60e01b81526001600160a01b03841690634f069fed90613329908990899086906001906004016139ac565b600060405180830381600087803b15801561334357600080fd5b505af1158015613357573d6000803e3d6000fd5b505060655460405163f4e5699160e01b8152600093506001600160a01b03909116915063f4e569919061338f90600a90600401613864565b602060405180830381865afa1580156133ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d0919061387e565b60405163d8b3219360e01b81529091506001600160a01b0382169063d8b3219390610a8f9089908b90600401613a15565b6033546001600160a01b031633146118cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60655460405163f4e5699160e01b815260009182916001600160a01b039091169063f4e56991906134e390600190600401613864565b602060405180830381865afa158015613500573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613524919061387e565b90506000806000836001600160a01b031663046d330789896040518363ffffffff1660e01b8152600401613559929190613a15565b606060405180830381865afa158015613576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359a9190613a2f565b925092509250600060405180606001604052808581526020018481526020018381525090506135c9818861361d565b9998505050505050505050565b600054610100900460ff166135fd5760405162461bcd60e51b815260040161069b90613aba565b6118cb613656565b60008183116136145782613616565b815b9392505050565b6000818360000151101561363657506040820151611078565b50506020015190565b60008161364c8486613a9b565b611cb59190613b05565b600054610100900460ff1661367d5760405162461bcd60e51b815260040161069b90613aba565b6118cb3361345b565b6001600160a01b038116811461108a57600080fd5b6000602082840312156136ad57600080fd5b813561361681613686565b602080825282518282018190526000919060409081850190868401855b8281101561370d57815180516001600160a01b03168552868101518786015285015185850152606090930192908501906001016136d5565b5091979650505050505050565b6000806040838503121561372d57600080fd5b823561373881613686565b946020939093013593505050565b6000806020838503121561375957600080fd5b823567ffffffffffffffff8082111561377157600080fd5b818501915085601f83011261378557600080fd5b81358181111561379457600080fd5b8660208260051b85010111156137a957600080fd5b60209290920196919550909350505050565b6000602082840312156137cd57600080fd5b5035919050565b600080604083850312156137e757600080fd5b82356137f281613686565b9150602083013561380281613686565b809150509250929050565b60008060006060848603121561382257600080fd5b833561382d81613686565b9250602084013561383d81613686565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b60208101601583106138785761387861384e565b91905290565b60006020828403121561389057600080fd5b815161361681613686565b6000602082840312156138ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156138dc576138dc6138b4565b500390565b634e487b7160e01b600052604160045260246000fd5b6000821982111561390a5761390a6138b4565b500190565b6001600160a01b03929092168252602082015260400190565b60008060006060848603121561393d57600080fd5b835161394881613686565b602085015160409095015190969495509392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201613987576139876138b4565b5060010190565b60208082526004908201526311cc0c0d60e21b604082015260600190565b6001600160a01b0394851681529290931660208301526040820152901515606082015260800190565b6000602082840312156139e757600080fd5b8151801515811461361657600080fd5b6020808252600490820152635330303760e01b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b600080600060608486031215613a4457600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b03858116825284166020820152604081018390526080810160048310613a8c57613a8c61384e565b82606083015295945050505050565b6000816000190483118215151615613ab557613ab56138b4565b500290565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082613b2257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220b2520e54599f50dd9223aa15fd2a49f4b8080938b4b0282c6d0e4a59fcc61cfe64736f6c634300080f0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
