{
    "_format": "hh-sol-artifact-1",
    "contractName": "StakeWeightedAllocationPolicy",
    "sourceName": "contracts/OperatorTokenomics/SponsorshipPolicies/StakeWeightedAllocationPolicy.sol",
    "abi": [
        {
            "inputs": [],
            "name": "AccessDenied",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "AccessDeniedDATATokenOnly",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "lockedStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "ActiveFlag",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "CannotIncreaseStakeUsingReduceStakeTo",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "FlaggingNotSupported",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "penaltyWei",
                    "type": "uint256"
                }
            ],
            "name": "LeavePenalty",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "MinOperatorCountZero",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "minimumStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "MinimumStake",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "moduleAddress",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "callBytes",
                    "type": "bytes"
                }
            ],
            "name": "ModuleCallError",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "callBytes",
                    "type": "bytes"
                }
            ],
            "name": "ModuleGetError",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "OperatorNotStaked",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "enum IKickPolicy.FlagState",
                    "name": "status",
                    "type": "uint8"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "votesForKick",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "votesAgainstKick",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "voter",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "voterWeight",
                    "type": "int256"
                }
            ],
            "name": "FlagUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "flagger",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "targetStakeAtRiskWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "reviewerCount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "name": "Flagged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "endTimeStamp",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "defaultedWeiPerStake",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "defaultedWei",
                    "type": "uint256"
                }
            ],
            "name": "InsolvencyEnded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "startTimeStamp",
                    "type": "uint256"
                }
            ],
            "name": "InsolvencyStarted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "OperatorJoined",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "OperatorKicked",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "returnedStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorLeft",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "OperatorSlashed",
            "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": "sponsor",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "SponsorshipReceived",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "totalStakedWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "remainingWei",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "operatorCount",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "bool",
                    "name": "isRunning",
                    "type": "bool"
                }
            ],
            "name": "SponsorshipUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "lockedStakeWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "minimumStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "StakeLockUpdate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "stakedWei",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "earningsWei",
                    "type": "uint256"
                }
            ],
            "name": "StakeUpdate",
            "type": "event"
        },
        {
            "stateMutability": "nonpayable",
            "type": "fallback"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IJoinPolicy",
                    "name": "newJoinPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "addJoinPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "allocationPolicy",
            "outputs": [
                {
                    "internalType": "contract IAllocationPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "earningsWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "metadataJsonString",
                    "type": "string"
                }
            ],
            "name": "flag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "flagMetadataJson",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "forceUnstake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "forfeitedStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getEarnings",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "allocation",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getEarningsWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "earningsWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                }
            ],
            "name": "getFlag",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "flagData",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "flagMetadata",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getInsolvencyTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "insolvencyTimestamp",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "getLeavePenalty",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "leavePenalty",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getMyStake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleAdmin",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "grantRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "hasRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "streamId_",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "metadata_",
                    "type": "string"
                },
                {
                    "internalType": "contract StreamrConfig",
                    "name": "globalStreamrConfig",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256[3]",
                    "name": "initParams",
                    "type": "uint256[3]"
                },
                {
                    "internalType": "contract IAllocationPolicy",
                    "name": "initialAllocationPolicy",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isFunded",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "isRunning",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "joinPolicies",
            "outputs": [
                {
                    "internalType": "contract IJoinPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "joinTimeOfOperator",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "kickPolicy",
            "outputs": [
                {
                    "internalType": "contract IKickPolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "leavePolicy",
            "outputs": [
                {
                    "internalType": "contract ILeavePolicy",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "lockedStakeWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "metadata",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minHorizonSeconds",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "minOperatorCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "minimumStakeOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "individualMinimumStakeWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "onJoin",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "onLeave",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "onSponsor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "stakeChangeWei",
                    "type": "int256"
                }
            ],
            "name": "onStakeChange",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "onTokenTransfer",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "onWithdraw",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "operatorCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "targetStakeWei",
                    "type": "uint256"
                }
            ],
            "name": "reduceStakeTo",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "remainingWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "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": "contract IAllocationPolicy",
                    "name": "newAllocationPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setAllocationPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IKickPolicy",
                    "name": "newKickPolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setKickPolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract ILeavePolicy",
                    "name": "newLeavePolicy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "setLeavePolicy",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "incomePerSecond",
                    "type": "uint256"
                }
            ],
            "name": "setParam",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "solventUntilTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "horizon",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "sponsor",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amountWei",
                    "type": "uint256"
                }
            ],
            "name": "stake",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "stakedWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamId",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "streamrConfig",
            "outputs": [
                {
                    "internalType": "contract StreamrConfig",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "token",
            "outputs": [
                {
                    "internalType": "contract IERC677",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalStakedWei",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unstake",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "voteData",
                    "type": "bytes32"
                }
            ],
            "name": "voteOnFlag",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "withdraw",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "payoutWei",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b506132e5806100206000396000f3fe608060405234801561001057600080fd5b50600436106102f85760003560e01c8063624ca99c11610193578063a4c0ed36116100e4578063da5a517b11610092578063da5a517b146107bd578063de44bb88146107d0578063df4bbd22146107d8578063e178d930146107e0578063f4408e4b146107f3578063fa267ddf146107fb578063fc0c546a14610804576102f8565b8063a4c0ed3614610738578063a5b83ce41461074b578063acbeddd71461075e578063adc9772e14610771578063b6cce5e214610784578063b9efec9514610797578063d547741f146107aa576102f8565b80637c6f3158116101415780637c6f3158146106d25780637db18807146106db5780637e11d1c6146106ee57806391a113031461070157806391d148541461070a578063988331301461071d578063a217fddf14610730576102f8565b8063624ca99c1461066d578063625eb6c8146106805780636e9bb3f7146106935780636fff860d146106a657806371b906eb146106b9578063759e30d8146106c15780637c654303146106ca576102f8565b8063357e47fe1161024d57806340947369116101fb57806340947369146105f05780634562980f146105f957806348611fcd1461060c5780634a45d2e61461061f5780635499dca51461063257806354a991b414610647578063584cb7cf1461065a576102f8565b8063357e47fe1461055957806336568abe1461057a57806338106e4d1461058d578063392f37e9146105a05780633a1c0aa8146105b55780633a82b50d146105d55780633ccfd60b146105e8576102f8565b80632014e5d1116102aa5780632014e5d1146104d2578063248a9ca3146104df5780632b308a56146105025780632def6620146105155780632f2ff15d1461051d578063303cbe571461053057806334a0f88114610550576102f8565b806301ffc9a71461041857806304a105911461044057806311648a4c14610455578063131b9c041461046c57806314c948eb1461047f578063191533861461049f57806319d164f1146104b2575b600036606033301461031d57604051634ca8886760e01b815260040160405180910390fd5b816000848261032d601482612bc3565b61033992859290612bda565b61034291612c04565b60601c90506000858186610357602087612bc3565b9261036493929190612bda565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b03871692506103b691508590612c60565b600060405180830381855af49150503d80600081146103f1576040519150601f19603f3d011682016040523d82523d6000602084013e6103f6565b606091505b50915091508161040857805181602001fd5b8051975060200195505050505050f35b61042b610426366004612c7c565b610817565b60405190151581526020015b60405180910390f35b61045361044e366004612cbb565b61084e565b005b61045e60a75481565b604051908152602001610437565b61045e61047a366004612ce7565b6108d0565b61045e61048d366004612ce7565b60a06020526000908152604090205481565b6104536104ad366004612ce7565b610935565b61045e6104c0366004612ce7565b60a26020526000908152604090205481565b60a65460a554101561042b565b61045e6104ed366004612d04565b60009081526065602052604090206001015490565b610453610510366004612cbb565b61098a565b61045e610a01565b61045361052b366004612d1d565b610a9c565b61045e61053e366004612ce7565b60a16020526000908152604090205481565b61045e60a45481565b61056c610567366004612ce7565b610ac6565b604051610437929190612d79565b610453610588366004612d1d565b610bce565b61045e61059b366004612d04565b610c4c565b6105a8610ded565b6040516104379190612d9a565b609a546105c8906001600160a01b031681565b6040516104379190612dad565b61045e6105e3366004612ce7565b610e7b565b61045e610eed565b61045e60a65481565b610453610607366004612e0a565b610f7a565b61045e61061a366004612ce7565b611136565b61045361062d366004612d04565b61117e565b33600090815260a0602052604090205461045e565b609b546105c8906001600160a01b031681565b609c546105c8906001600160a01b031681565b61045361067b366004612ce7565b61118b565b6105c861068e366004612d04565b6111c8565b61045e6106a1366004612ce7565b6111f2565b6104536106b4366004612cbb565b61132e565b61045e6113c9565b61045e60a35481565b61042b6113fc565b61045e60a55481565b6105a86106e9366004612ce7565b61141a565b6104536106fc366004612edf565b611433565b61045e60a85481565b61042b610718366004612d1d565b6114b1565b6097546105c8906001600160a01b031681565b61045e600081565b610453610746366004612fa3565b6114dc565b610453610759366004612cbb565b611544565b61045361076c366004612cbb565b6115a7565b61045361077f366004612cbb565b6115f0565b610453610792366004612d04565b611670565b6104536107a5366004612cbb565b6116fa565b6104536107b8366004612d1d565b611743565b61045e6107cb366004612ce7565b611768565b61045e6117b0565b61045e6117f8565b6104536107ee366004612cbb565b611804565b6105a86118d0565b61045e60a95481565b6098546105c8906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148061084857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000610859816118dd565b609b80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b906044015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e7565b50505050565b609a5460405160009161084891636e9bb3f760e01b916108fe9186916001600160a01b031690602401612fff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611988565b61093d611a1e565b610945611b89565b6001600160a01b0382166000908152600391909101602052604081205561096a611b89565b6001600160a01b0390911660009081526002919091016020526040812055565b6000610995816118dd565b609980546001810182556000919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b038516179055604051602481018390526108ca908490632522e97360e11b90604401610893565b60003381610a0e82611768565b90508015610a37576040516301e1d66b60e21b8152600481018290526024015b60405180910390fd5b6001600160a01b038216600090815260a2602052604090205415610a8c576001600160a01b038216600090815260a2602052604090819020549051635df79f0d60e11b81526004810191909152602401610a2e565b610a9582611c0e565b9250505090565b600082815260656020526040902060010154610ab7816118dd565b610ac18383611fea565b505050565b609c546000906060906001600160a01b0316610af55760405163213a65f360e11b815260040160405180910390fd5b609c54604051610b229163c027553560e01b916108fe9187916001600160a01b0390911690602401612fff565b6001600160a01b0384166000908152609f60205260409020805491935090610b4990613019565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7590613019565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b50505050509050915091565b6001600160a01b0381163314610c3e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a2e565b610c488282612070565b5050565b33600081815260a060205260408120549091908310610c7e5760405163aa4c075760e01b815260040160405180910390fd5b6000610c8982611136565b905080841015610caf576040516305f48c3560e11b815260048101829052602401610a2e565b6001600160a01b038216600090815260a06020526040902054610cde908390610cd9908790612bc3565b6120d7565b60985460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb90610d11908590879060040161304d565b6020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190613066565b506001600160a01b038216600081815260a0602052604090205460008051602061327083398151915290610d87856108d0565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a854604051610dde929190918252602082015260400190565b60405180910390a35050919050565b609e8054610dfa90613019565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2690613019565b8015610e735780601f10610e4857610100808354040283529160200191610e73565b820191906000526020600020905b815481529060010190602001808311610e5657829003601f168201915b505050505081565b6000610e85611a1e565b610e8e826111f2565b90508060a96000828254610ea29190612bc3565b9091555060009050610eb2611b89565b60018101546001600160a01b039094166000908152600282016020908152604080832096909655600390920190915292832092909255919050565b33600081815260a160205260408120549091908203610f1f576040516314625d5d60e21b815260040160405180910390fd5b610f28816121c7565b91508115610f76576001600160a01b038116600081815260a0602052604080822054905160008051602061327083398151915292610f6d928252602082015260400190565b60405180910390a25b5090565b600054610100900460ff1615808015610f9a5750600054600160ff909116105b80610fb45750303b158015610fb4575060005460ff166001145b6110175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a2e565b6000805460ff19166001179055801561103a576000805461ff0019166101001790555b63ffffffff8335811660a75560208401351660a68190556040840135906000036110775760405163309f1b0d60e21b815260040160405180910390fd5b609880546001600160a01b0319166001600160a01b03871617905561109e609d8b8b612aa4565b506110ab609e8989612aa4565b50609780546001600160a01b0319166001600160a01b0388161790556110cf61229c565b6110da600033612309565b6110e483826116fa565b50801561112b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b609c546000906001600160a01b031661115157506000919050565b609c54604051610848916304f9acdf60e11b916108fe9186916001600160a01b0390911690602401612fff565b80611187611b89565b5550565b611193611a1e565b61119b611b89565b600101546111a7611b89565b6001600160a01b039092166000908152600292909201602052604090912055565b609981815481106111d857600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116600090815260a06020526040812054810361121957506000919050565b6000611223611b89565b9050600061122f612313565b50905060008260070154826a0c097ce7bc90715b34b9f160241b611253919061309e565b61125d91906130bd565b836001015461126c91906130df565b90506000611278611b89565b6001600160a01b0387166000908152600291909101602052604090205461129f9083612bc3565b6001600160a01b038716600090815260a060205260409020549091506a0c097ce7bc90715b34b9f160241b906112d690839061309e565b6112de611b89565b6001600160a01b0389166000908152600391909101602052604090205461130591906130df565b61131a906a084595161401484a0000006130df565b61132491906130bd565b9695505050505050565b8060000361133a575050565b611342611a1e565b600061134c611b89565b600481015490915015610ac1577f9d584a7e1b19f15c4a9b3fc12662146f10b5739603ce9aaab30d80bab7d8ea2a42670de0b6b3a7640000836005015461139391906130bd565b60048401546040805193845260208401929092529082015260600160405180910390a16000600582018190556004820155505050565b609a546040516000916113f791631bc8977160e31b916108fe916001600160a01b0390911690602401612dad565b905090565b600060a7544261140c91906130df565b6114146113c9565b11905090565b609f6020526000908152604090208054610dfa90613019565b6001600160a01b0382166000908152609f60209081526040909120825161145c92840190612b24565b50609c546001600160a01b03166114865760405163213a65f360e11b815260040160405180910390fd5b609c54610ac1906001600160a01b031663344763f160e21b8433604051602401610893929190612fff565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6098546001600160a01b031633146115075760405163118d9d7160e11b815260040160405180910390fd5b601481900361152557813560601c61151f8185612393565b506108ca565b602081900361153a57813561151f8185612393565b6108ca84846125fc565b609c546001600160a01b031661156d5760405163213a65f360e11b815260040160405180910390fd5b609c546040516001600160a01b03848116602483015260448201849052336064830152610ac192169063fbbabed960e01b90608401610893565b60006115b2816118dd565b609c80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b90604401610893565b6098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b8152600401611622939291906130f7565b6020604051808303816000875af1158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190613066565b50610c488282612393565b80156116ed576098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b81526004016116a8939291906130f7565b6020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190613066565b505b6116f733826125fc565b50565b6000611705816118dd565b609a80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b90604401610893565b60008281526065602052604090206001015461175e816118dd565b610ac18383612070565b609b546000906001600160a01b031661178357506000919050565b609b54604051610848916318820b1b60e01b916108fe9186916001600160a01b0390911690602401612fff565b6000806117bb611b89565b80549091506000036117d257600160ff1b91505090565b805460088201546117e391906130bd565b81600601546117f291906130df565b91505090565b6000336117f281611c0e565b600061180e611b89565b9050611818611a1e565b6001600160a01b038316600090815260a0602052604081205461183c90849061311b565b6001600160a01b03851660009081526002840160205260408120546001850154929350909161186b9190612bc3565b9050611877818361309e565b6001600160a01b0386166000908152600385016020526040812080549091906118a19084906130df565b90915550505060018201546001600160a01b039094166000908152600290920160205250604090209190915550565b609d8054610dfa90613019565b6116f781336127b9565b6000806000846001600160a01b0316846040516119049190612c60565b600060405180830381855af49150503d806000811461193f576040519150601f19603f3d011682016040523d82523d6000602084013e611944565b606091505b50915091508161197c57805160000361197457848460405163918623b760e01b8152600401610a2e92919061315a565b805181602001fd5b60200151949350505050565b6000806000306001600160a01b0316846040516119a59190612c60565b600060405180830381855afa9150503d80600081146119e0576040519150601f19603f3d011682016040523d82523d6000602084013e6119e5565b606091505b509150915081611a13578051600003611974578360405163029801d760e41b8152600401610a2e9190612d9a565b602001519392505050565b6000611a28611b89565b9050600080611a35612313565b90925090508015611ae0578260040154600003611a87577f6b84b3854e3868de91705a7163cc5cc88f64366b8912900fa377af1f40d6fc1f611a756117b0565b60405190815260200160405180910390a15b80836004016000828254611a9b91906130df565b90915550506007830154611abd826a0c097ce7bc90715b34b9f160241b61309e565b611ac791906130bd565b836005016000828254611ada91906130df565b90915550505b8115611b56578160a96000828254611af891906130df565b925050819055508160a86000828254611b119190612bc3565b90915550506007830154611b33836a0c097ce7bc90715b34b9f160241b61309e565b611b3d91906130bd565b836001016000828254611b5091906130df565b90915550505b505042600682015560a854600882015560a454600782015560a65460a5546009909201805460ff19169190921015179055565b60008030604051602001611bf091907f73706f6e736f72736869702e73746f726167652e5374616b655765696768746581527064416c6c6f636174696f6e506f6c69637960781b602082015260609190911b6001600160601b031916603182015260450190565b60408051601f19818403018152919052805160209091012092915050565b6001600160a01b038116600090815260a160205260408120548103611c46576040516314625d5d60e21b815260040160405180910390fd5b6001600160a01b038216600090815260a2602052604090205415611ce7576001600160a01b038216600090815260a2602052604081208054919055611c8b8382612812565b60a36000828254611c9c91906130df565b909155505060408051600080825260208201526001600160a01b038516917f7785543bdf6fdde3b8486c62fa277837a6032d5819acf53e664ef0c45332fcb2910160405180910390a2505b6000611cf283611768565b90508015611dde576098546097546040805163675c06f960e11b815290516001600160a01b039384169363a9059cbb93169163ceb80df29160048083019260209291908290030181865afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d72919061317e565b611d7c8685612812565b6040518363ffffffff1660e01b8152600401611d9992919061304d565b6020604051808303816000875af1158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190613066565b505b6000611de9846121c7565b6001600160a01b038516600090815260a0602052604081205460a58054939450909260019290611e1a908490612bc3565b925050819055508060a46000828254611e339190612bc3565b90915550506001600160a01b03808616600090815260a06020908152604080832083905560a190915280822091909155609a549051611e88929190911690630c8a99c360e11b90610893908990602401612dad565b5060408051600080825260208201526001600160a01b03871691600080516020613270833981519152910160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a854604051611efa929190918252602082015260400190565b60405180910390a3846001600160a01b03167f14a9c4ce3dc5694e8873bfea05304d57d64ba56ee7ad9ad5fe40b3d8e4e4d3f082604051611f3d91815260200190565b60405180910390a2609854604051630200057560e51b81526001600160a01b038781166004830152602482018490526060604483015260056064830152647374616b6560d81b608483015290911690634000aea09060a4016020604051808303816000875af1925050508015611fd0575060408051601f3d908101601f19168201909252611fcd91810190613066565b60015b15611fd757505b611fe181836130df565b95945050505050565b611ff482826114b1565b610c485760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561202c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61207a82826114b1565b15610c485760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216600090815260a0602090815260408083205460a29092528220541061210857506000610848565b6001600160a01b038316600090815260a2602090815260408083205460a09092529091205461214291849161213d9190612bc3565b6128de565b6001600160a01b038416600090815260a0602052604081208054929350839290919061216f908490612bc3565b925050819055508060a460008282546121889190612bc3565b9091555050609a546121c0906001600160a01b0316630e178d9360e41b856121af8561319b565b60405160240161089392919061304d565b5092915050565b609a546040516000916121f7916001600160a01b0390911690633a82b50d60e01b90610893908690602401612dad565b9050801561229757609854604051630200057560e51b81526001600160a01b0384811660048301526024820184905260606044830152600a60648301526930b63637b1b0ba34b7b760b11b608483015290911690634000aea09060a4016020604051808303816000875af192505050801561228f575060408051601f3d908101601f1916820190925261228c91810190613066565b60015b15612297575b505b919050565b600054610100900460ff166123075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a2e565b565b610c488282611fea565b6000806000612320611b89565b600981015490915060ff1661233a57506000928392509050565b600081600601544261234c9190612bc3565b90506000818360000154612360919061309e565b600884015490915081811015612387578061237b8184612bc3565b95509550505050509091565b50946000945092505050565b6001600160a01b038216600090815260a06020526040812080548015928492916123be9084906130df565b925050819055508160a460008282546123d791906130df565b90915550600090506123e884611136565b6001600160a01b038516600090815260a06020526040902054909150811115612427576040516305f48c3560e11b815260048101829052602401610a2e565b811561253657600160a5600082825461244091906130df565b90915550506001600160a01b038416600090815260a1602052604081204290555b6099548110156124d05760006099828154811061248057612480613088565b6000918252602090912001546040516001600160a01b0390911691506124bb9082906307b88ea560e01b90610893908a908a9060240161304d565b505080806124c8906131b7565b915050612461565b50609a546040516124fc916001600160a01b0316906318932a6760e21b90610893908890602401612dad565b506040516001600160a01b038516907fa2ab3900cad3f350c9333a5814b4c581dee01f3ca964bbf8cd96e061a00da0d290600090a2612565565b609a54604051612563916001600160a01b031690630e178d9360e41b90610893908890889060240161304d565b505b6001600160a01b038416600081815260a0602052604090205460008051602061327083398151915290612597876108d0565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a8546040516125ee929190918252602082015260400190565b60405180910390a350505050565b60a85460a35460a45460a9546098546040516370a0823160e01b81526001600160a01b03909116906370a0823190612638903090600401612dad565b602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267991906131d0565b6126839190612bc3565b61268d9190612bc3565b6126979190612bc3565b60a88190556000906126aa908390612bc3565b905060006126b88483612bc3565b609a546040519192506126ea916001600160a01b0390911690636fff860d60e01b90610893908990879060240161304d565b50846001600160a01b03167fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd998560405161272691815260200190565b60405180910390a2801561276b576040518181526000907fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd999060200160405180910390a25b60a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a8546040516127aa929190918252602082015260400190565b60405180910390a35050505050565b6127c382826114b1565b610c48576127d0816128f6565b6127db836020612908565b6040516020016127ec9291906131e9565b60408051601f198184030181529082905262461bcd60e51b8252610a2e91600401612d9a565b60008160000361282457506000610848565b61282e83836120d7565b90506001600160a01b0383163b1561289557604051633dfb89db60e11b8152600481018290526001600160a01b03841690637bf713b690602401600060405180830381600087803b15801561288257600080fd5b505af1925050508015612893575060015b505b826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced826040516128d091815260200190565b60405180910390a292915050565b60008183106128ed57816128ef565b825b9392505050565b60606108486001600160a01b03831660145b6060600061291783600261309e565b6129229060026130df565b67ffffffffffffffff81111561293a5761293a612ec9565b6040519080825280601f01601f191660200182016040528015612964576020820181803683370190505b509050600360fc1b8160008151811061297f5761297f613088565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106129ae576129ae613088565b60200101906001600160f81b031916908160001a90535060006129d284600261309e565b6129dd9060016130df565b90505b6001811115612a55576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612a1157612a11613088565b1a60f81b828281518110612a2757612a27613088565b60200101906001600160f81b031916908160001a90535060049490941c93612a4e81613258565b90506129e0565b5083156128ef5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a2e565b828054612ab090613019565b90600052602060002090601f016020900481019282612ad25760008555612b18565b82601f10612aeb5782800160ff19823516178555612b18565b82800160010185558215612b18579182015b82811115612b18578235825591602001919060010190612afd565b50610f76929150612b98565b828054612b3090613019565b90600052602060002090601f016020900481019282612b525760008555612b18565b82601f10612b6b57805160ff1916838001178555612b18565b82800160010185558215612b18579182015b82811115612b18578251825591602001919060010190612b7d565b5b80821115610f765760008155600101612b99565b634e487b7160e01b600052601160045260246000fd5b600082821015612bd557612bd5612bad565b500390565b60008085851115612bea57600080fd5b83861115612bf757600080fd5b5050820193919092039150565b6001600160601b03198135818116916014851015612c2c5780818660140360031b1b83161692505b505092915050565b60005b83811015612c4f578181015183820152602001612c37565b838111156108ca5750506000910152565b60008251612c72818460208701612c34565b9190910192915050565b600060208284031215612c8e57600080fd5b81356001600160e01b0319811681146128ef57600080fd5b6001600160a01b03811681146116f757600080fd5b60008060408385031215612cce57600080fd5b8235612cd981612ca6565b946020939093013593505050565b600060208284031215612cf957600080fd5b81356128ef81612ca6565b600060208284031215612d1657600080fd5b5035919050565b60008060408385031215612d3057600080fd5b823591506020830135612d4281612ca6565b809150509250929050565b60008151808452612d65816020860160208601612c34565b601f01601f19169290920160200192915050565b828152604060208201526000612d926040830184612d4d565b949350505050565b6020815260006128ef6020830184612d4d565b6001600160a01b0391909116815260200190565b60008083601f840112612dd357600080fd5b50813567ffffffffffffffff811115612deb57600080fd5b602083019150836020828501011115612e0357600080fd5b9250929050565b600080600080600080600080610100898b031215612e2757600080fd5b883567ffffffffffffffff80821115612e3f57600080fd5b612e4b8c838d01612dc1565b909a50985060208b0135915080821115612e6457600080fd5b50612e718b828c01612dc1565b9097509550506040890135612e8581612ca6565b93506060890135612e9581612ca6565b925060e089018a811115612ea857600080fd5b60808a01925035612eb881612ca6565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef257600080fd5b8235612efd81612ca6565b9150602083013567ffffffffffffffff80821115612f1a57600080fd5b818501915085601f830112612f2e57600080fd5b813581811115612f4057612f40612ec9565b604051601f8201601f19908116603f01168101908382118183101715612f6857612f68612ec9565b81604052828152886020848701011115612f8157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060608587031215612fb957600080fd5b8435612fc481612ca6565b935060208501359250604085013567ffffffffffffffff811115612fe757600080fd5b612ff387828801612dc1565b95989497509550505050565b6001600160a01b0392831681529116602082015260400190565b600181811c9082168061302d57607f821691505b60208210810361229557634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561307857600080fd5b815180151581146128ef57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156130b8576130b8612bad565b500290565b6000826130da57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130f2576130f2612bad565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b85018412161561313957613139612bad565b6001600160ff1b038401831381161561315457613154612bad565b50500390565b6001600160a01b0383168152604060208201819052600090612d9290830184612d4d565b60006020828403121561319057600080fd5b81516128ef81612ca6565b6000600160ff1b82016131b0576131b0612bad565b5060000390565b6000600182016131c9576131c9612bad565b5060010190565b6000602082840312156131e257600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161321b816017850160208801612c34565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161324c816028840160208801612c34565b01602801949350505050565b60008161326757613267612bad565b50600019019056fe5d179bbeed3396160151c93c13d38566dc1643f25a316cca998cd25f45a8bd3f38a9ab06ef5f5ea75fd622f984e03b2393343b6039c656e874e3fa9e3ddcd7b2a2646970667358221220489a22da17b95313f0d6a1ef754cdff207b412d2d43c8e78ca6f9fe5714a5f6264736f6c634300080d0033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f85760003560e01c8063624ca99c11610193578063a4c0ed36116100e4578063da5a517b11610092578063da5a517b146107bd578063de44bb88146107d0578063df4bbd22146107d8578063e178d930146107e0578063f4408e4b146107f3578063fa267ddf146107fb578063fc0c546a14610804576102f8565b8063a4c0ed3614610738578063a5b83ce41461074b578063acbeddd71461075e578063adc9772e14610771578063b6cce5e214610784578063b9efec9514610797578063d547741f146107aa576102f8565b80637c6f3158116101415780637c6f3158146106d25780637db18807146106db5780637e11d1c6146106ee57806391a113031461070157806391d148541461070a578063988331301461071d578063a217fddf14610730576102f8565b8063624ca99c1461066d578063625eb6c8146106805780636e9bb3f7146106935780636fff860d146106a657806371b906eb146106b9578063759e30d8146106c15780637c654303146106ca576102f8565b8063357e47fe1161024d57806340947369116101fb57806340947369146105f05780634562980f146105f957806348611fcd1461060c5780634a45d2e61461061f5780635499dca51461063257806354a991b414610647578063584cb7cf1461065a576102f8565b8063357e47fe1461055957806336568abe1461057a57806338106e4d1461058d578063392f37e9146105a05780633a1c0aa8146105b55780633a82b50d146105d55780633ccfd60b146105e8576102f8565b80632014e5d1116102aa5780632014e5d1146104d2578063248a9ca3146104df5780632b308a56146105025780632def6620146105155780632f2ff15d1461051d578063303cbe571461053057806334a0f88114610550576102f8565b806301ffc9a71461041857806304a105911461044057806311648a4c14610455578063131b9c041461046c57806314c948eb1461047f578063191533861461049f57806319d164f1146104b2575b600036606033301461031d57604051634ca8886760e01b815260040160405180910390fd5b816000848261032d601482612bc3565b61033992859290612bda565b61034291612c04565b60601c90506000858186610357602087612bc3565b9261036493929190612bda565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b03871692506103b691508590612c60565b600060405180830381855af49150503d80600081146103f1576040519150601f19603f3d011682016040523d82523d6000602084013e6103f6565b606091505b50915091508161040857805181602001fd5b8051975060200195505050505050f35b61042b610426366004612c7c565b610817565b60405190151581526020015b60405180910390f35b61045361044e366004612cbb565b61084e565b005b61045e60a75481565b604051908152602001610437565b61045e61047a366004612ce7565b6108d0565b61045e61048d366004612ce7565b60a06020526000908152604090205481565b6104536104ad366004612ce7565b610935565b61045e6104c0366004612ce7565b60a26020526000908152604090205481565b60a65460a554101561042b565b61045e6104ed366004612d04565b60009081526065602052604090206001015490565b610453610510366004612cbb565b61098a565b61045e610a01565b61045361052b366004612d1d565b610a9c565b61045e61053e366004612ce7565b60a16020526000908152604090205481565b61045e60a45481565b61056c610567366004612ce7565b610ac6565b604051610437929190612d79565b610453610588366004612d1d565b610bce565b61045e61059b366004612d04565b610c4c565b6105a8610ded565b6040516104379190612d9a565b609a546105c8906001600160a01b031681565b6040516104379190612dad565b61045e6105e3366004612ce7565b610e7b565b61045e610eed565b61045e60a65481565b610453610607366004612e0a565b610f7a565b61045e61061a366004612ce7565b611136565b61045361062d366004612d04565b61117e565b33600090815260a0602052604090205461045e565b609b546105c8906001600160a01b031681565b609c546105c8906001600160a01b031681565b61045361067b366004612ce7565b61118b565b6105c861068e366004612d04565b6111c8565b61045e6106a1366004612ce7565b6111f2565b6104536106b4366004612cbb565b61132e565b61045e6113c9565b61045e60a35481565b61042b6113fc565b61045e60a55481565b6105a86106e9366004612ce7565b61141a565b6104536106fc366004612edf565b611433565b61045e60a85481565b61042b610718366004612d1d565b6114b1565b6097546105c8906001600160a01b031681565b61045e600081565b610453610746366004612fa3565b6114dc565b610453610759366004612cbb565b611544565b61045361076c366004612cbb565b6115a7565b61045361077f366004612cbb565b6115f0565b610453610792366004612d04565b611670565b6104536107a5366004612cbb565b6116fa565b6104536107b8366004612d1d565b611743565b61045e6107cb366004612ce7565b611768565b61045e6117b0565b61045e6117f8565b6104536107ee366004612cbb565b611804565b6105a86118d0565b61045e60a95481565b6098546105c8906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148061084857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000610859816118dd565b609b80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b906044015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526118e7565b50505050565b609a5460405160009161084891636e9bb3f760e01b916108fe9186916001600160a01b031690602401612fff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611988565b61093d611a1e565b610945611b89565b6001600160a01b0382166000908152600391909101602052604081205561096a611b89565b6001600160a01b0390911660009081526002919091016020526040812055565b6000610995816118dd565b609980546001810182556000919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b038516179055604051602481018390526108ca908490632522e97360e11b90604401610893565b60003381610a0e82611768565b90508015610a37576040516301e1d66b60e21b8152600481018290526024015b60405180910390fd5b6001600160a01b038216600090815260a2602052604090205415610a8c576001600160a01b038216600090815260a2602052604090819020549051635df79f0d60e11b81526004810191909152602401610a2e565b610a9582611c0e565b9250505090565b600082815260656020526040902060010154610ab7816118dd565b610ac18383611fea565b505050565b609c546000906060906001600160a01b0316610af55760405163213a65f360e11b815260040160405180910390fd5b609c54604051610b229163c027553560e01b916108fe9187916001600160a01b0390911690602401612fff565b6001600160a01b0384166000908152609f60205260409020805491935090610b4990613019565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7590613019565b8015610bc25780601f10610b9757610100808354040283529160200191610bc2565b820191906000526020600020905b815481529060010190602001808311610ba557829003601f168201915b50505050509050915091565b6001600160a01b0381163314610c3e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a2e565b610c488282612070565b5050565b33600081815260a060205260408120549091908310610c7e5760405163aa4c075760e01b815260040160405180910390fd5b6000610c8982611136565b905080841015610caf576040516305f48c3560e11b815260048101829052602401610a2e565b6001600160a01b038216600090815260a06020526040902054610cde908390610cd9908790612bc3565b6120d7565b60985460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb90610d11908590879060040161304d565b6020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190613066565b506001600160a01b038216600081815260a0602052604090205460008051602061327083398151915290610d87856108d0565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a854604051610dde929190918252602082015260400190565b60405180910390a35050919050565b609e8054610dfa90613019565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2690613019565b8015610e735780601f10610e4857610100808354040283529160200191610e73565b820191906000526020600020905b815481529060010190602001808311610e5657829003601f168201915b505050505081565b6000610e85611a1e565b610e8e826111f2565b90508060a96000828254610ea29190612bc3565b9091555060009050610eb2611b89565b60018101546001600160a01b039094166000908152600282016020908152604080832096909655600390920190915292832092909255919050565b33600081815260a160205260408120549091908203610f1f576040516314625d5d60e21b815260040160405180910390fd5b610f28816121c7565b91508115610f76576001600160a01b038116600081815260a0602052604080822054905160008051602061327083398151915292610f6d928252602082015260400190565b60405180910390a25b5090565b600054610100900460ff1615808015610f9a5750600054600160ff909116105b80610fb45750303b158015610fb4575060005460ff166001145b6110175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a2e565b6000805460ff19166001179055801561103a576000805461ff0019166101001790555b63ffffffff8335811660a75560208401351660a68190556040840135906000036110775760405163309f1b0d60e21b815260040160405180910390fd5b609880546001600160a01b0319166001600160a01b03871617905561109e609d8b8b612aa4565b506110ab609e8989612aa4565b50609780546001600160a01b0319166001600160a01b0388161790556110cf61229c565b6110da600033612309565b6110e483826116fa565b50801561112b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b609c546000906001600160a01b031661115157506000919050565b609c54604051610848916304f9acdf60e11b916108fe9186916001600160a01b0390911690602401612fff565b80611187611b89565b5550565b611193611a1e565b61119b611b89565b600101546111a7611b89565b6001600160a01b039092166000908152600292909201602052604090912055565b609981815481106111d857600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116600090815260a06020526040812054810361121957506000919050565b6000611223611b89565b9050600061122f612313565b50905060008260070154826a0c097ce7bc90715b34b9f160241b611253919061309e565b61125d91906130bd565b836001015461126c91906130df565b90506000611278611b89565b6001600160a01b0387166000908152600291909101602052604090205461129f9083612bc3565b6001600160a01b038716600090815260a060205260409020549091506a0c097ce7bc90715b34b9f160241b906112d690839061309e565b6112de611b89565b6001600160a01b0389166000908152600391909101602052604090205461130591906130df565b61131a906a084595161401484a0000006130df565b61132491906130bd565b9695505050505050565b8060000361133a575050565b611342611a1e565b600061134c611b89565b600481015490915015610ac1577f9d584a7e1b19f15c4a9b3fc12662146f10b5739603ce9aaab30d80bab7d8ea2a42670de0b6b3a7640000836005015461139391906130bd565b60048401546040805193845260208401929092529082015260600160405180910390a16000600582018190556004820155505050565b609a546040516000916113f791631bc8977160e31b916108fe916001600160a01b0390911690602401612dad565b905090565b600060a7544261140c91906130df565b6114146113c9565b11905090565b609f6020526000908152604090208054610dfa90613019565b6001600160a01b0382166000908152609f60209081526040909120825161145c92840190612b24565b50609c546001600160a01b03166114865760405163213a65f360e11b815260040160405180910390fd5b609c54610ac1906001600160a01b031663344763f160e21b8433604051602401610893929190612fff565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6098546001600160a01b031633146115075760405163118d9d7160e11b815260040160405180910390fd5b601481900361152557813560601c61151f8185612393565b506108ca565b602081900361153a57813561151f8185612393565b6108ca84846125fc565b609c546001600160a01b031661156d5760405163213a65f360e11b815260040160405180910390fd5b609c546040516001600160a01b03848116602483015260448201849052336064830152610ac192169063fbbabed960e01b90608401610893565b60006115b2816118dd565b609c80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b90604401610893565b6098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b8152600401611622939291906130f7565b6020604051808303816000875af1158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190613066565b50610c488282612393565b80156116ed576098546001600160a01b03166323b872dd3330846040518463ffffffff1660e01b81526004016116a8939291906130f7565b6020604051808303816000875af11580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190613066565b505b6116f733826125fc565b50565b6000611705816118dd565b609a80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108ca9190632522e97360e11b90604401610893565b60008281526065602052604090206001015461175e816118dd565b610ac18383612070565b609b546000906001600160a01b031661178357506000919050565b609b54604051610848916318820b1b60e01b916108fe9186916001600160a01b0390911690602401612fff565b6000806117bb611b89565b80549091506000036117d257600160ff1b91505090565b805460088201546117e391906130bd565b81600601546117f291906130df565b91505090565b6000336117f281611c0e565b600061180e611b89565b9050611818611a1e565b6001600160a01b038316600090815260a0602052604081205461183c90849061311b565b6001600160a01b03851660009081526002840160205260408120546001850154929350909161186b9190612bc3565b9050611877818361309e565b6001600160a01b0386166000908152600385016020526040812080549091906118a19084906130df565b90915550505060018201546001600160a01b039094166000908152600290920160205250604090209190915550565b609d8054610dfa90613019565b6116f781336127b9565b6000806000846001600160a01b0316846040516119049190612c60565b600060405180830381855af49150503d806000811461193f576040519150601f19603f3d011682016040523d82523d6000602084013e611944565b606091505b50915091508161197c57805160000361197457848460405163918623b760e01b8152600401610a2e92919061315a565b805181602001fd5b60200151949350505050565b6000806000306001600160a01b0316846040516119a59190612c60565b600060405180830381855afa9150503d80600081146119e0576040519150601f19603f3d011682016040523d82523d6000602084013e6119e5565b606091505b509150915081611a13578051600003611974578360405163029801d760e41b8152600401610a2e9190612d9a565b602001519392505050565b6000611a28611b89565b9050600080611a35612313565b90925090508015611ae0578260040154600003611a87577f6b84b3854e3868de91705a7163cc5cc88f64366b8912900fa377af1f40d6fc1f611a756117b0565b60405190815260200160405180910390a15b80836004016000828254611a9b91906130df565b90915550506007830154611abd826a0c097ce7bc90715b34b9f160241b61309e565b611ac791906130bd565b836005016000828254611ada91906130df565b90915550505b8115611b56578160a96000828254611af891906130df565b925050819055508160a86000828254611b119190612bc3565b90915550506007830154611b33836a0c097ce7bc90715b34b9f160241b61309e565b611b3d91906130bd565b836001016000828254611b5091906130df565b90915550505b505042600682015560a854600882015560a454600782015560a65460a5546009909201805460ff19169190921015179055565b60008030604051602001611bf091907f73706f6e736f72736869702e73746f726167652e5374616b655765696768746581527064416c6c6f636174696f6e506f6c69637960781b602082015260609190911b6001600160601b031916603182015260450190565b60408051601f19818403018152919052805160209091012092915050565b6001600160a01b038116600090815260a160205260408120548103611c46576040516314625d5d60e21b815260040160405180910390fd5b6001600160a01b038216600090815260a2602052604090205415611ce7576001600160a01b038216600090815260a2602052604081208054919055611c8b8382612812565b60a36000828254611c9c91906130df565b909155505060408051600080825260208201526001600160a01b038516917f7785543bdf6fdde3b8486c62fa277837a6032d5819acf53e664ef0c45332fcb2910160405180910390a2505b6000611cf283611768565b90508015611dde576098546097546040805163675c06f960e11b815290516001600160a01b039384169363a9059cbb93169163ceb80df29160048083019260209291908290030181865afa158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d72919061317e565b611d7c8685612812565b6040518363ffffffff1660e01b8152600401611d9992919061304d565b6020604051808303816000875af1158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190613066565b505b6000611de9846121c7565b6001600160a01b038516600090815260a0602052604081205460a58054939450909260019290611e1a908490612bc3565b925050819055508060a46000828254611e339190612bc3565b90915550506001600160a01b03808616600090815260a06020908152604080832083905560a190915280822091909155609a549051611e88929190911690630c8a99c360e11b90610893908990602401612dad565b5060408051600080825260208201526001600160a01b03871691600080516020613270833981519152910160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a854604051611efa929190918252602082015260400190565b60405180910390a3846001600160a01b03167f14a9c4ce3dc5694e8873bfea05304d57d64ba56ee7ad9ad5fe40b3d8e4e4d3f082604051611f3d91815260200190565b60405180910390a2609854604051630200057560e51b81526001600160a01b038781166004830152602482018490526060604483015260056064830152647374616b6560d81b608483015290911690634000aea09060a4016020604051808303816000875af1925050508015611fd0575060408051601f3d908101601f19168201909252611fcd91810190613066565b60015b15611fd757505b611fe181836130df565b95945050505050565b611ff482826114b1565b610c485760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561202c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61207a82826114b1565b15610c485760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216600090815260a0602090815260408083205460a29092528220541061210857506000610848565b6001600160a01b038316600090815260a2602090815260408083205460a09092529091205461214291849161213d9190612bc3565b6128de565b6001600160a01b038416600090815260a0602052604081208054929350839290919061216f908490612bc3565b925050819055508060a460008282546121889190612bc3565b9091555050609a546121c0906001600160a01b0316630e178d9360e41b856121af8561319b565b60405160240161089392919061304d565b5092915050565b609a546040516000916121f7916001600160a01b0390911690633a82b50d60e01b90610893908690602401612dad565b9050801561229757609854604051630200057560e51b81526001600160a01b0384811660048301526024820184905260606044830152600a60648301526930b63637b1b0ba34b7b760b11b608483015290911690634000aea09060a4016020604051808303816000875af192505050801561228f575060408051601f3d908101601f1916820190925261228c91810190613066565b60015b15612297575b505b919050565b600054610100900460ff166123075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a2e565b565b610c488282611fea565b6000806000612320611b89565b600981015490915060ff1661233a57506000928392509050565b600081600601544261234c9190612bc3565b90506000818360000154612360919061309e565b600884015490915081811015612387578061237b8184612bc3565b95509550505050509091565b50946000945092505050565b6001600160a01b038216600090815260a06020526040812080548015928492916123be9084906130df565b925050819055508160a460008282546123d791906130df565b90915550600090506123e884611136565b6001600160a01b038516600090815260a06020526040902054909150811115612427576040516305f48c3560e11b815260048101829052602401610a2e565b811561253657600160a5600082825461244091906130df565b90915550506001600160a01b038416600090815260a1602052604081204290555b6099548110156124d05760006099828154811061248057612480613088565b6000918252602090912001546040516001600160a01b0390911691506124bb9082906307b88ea560e01b90610893908a908a9060240161304d565b505080806124c8906131b7565b915050612461565b50609a546040516124fc916001600160a01b0316906318932a6760e21b90610893908890602401612dad565b506040516001600160a01b038516907fa2ab3900cad3f350c9333a5814b4c581dee01f3ca964bbf8cd96e061a00da0d290600090a2612565565b609a54604051612563916001600160a01b031690630e178d9360e41b90610893908890889060240161304d565b505b6001600160a01b038416600081815260a0602052604090205460008051602061327083398151915290612597876108d0565b6040805192835260208301919091520160405180910390a260a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a8546040516125ee929190918252602082015260400190565b60405180910390a350505050565b60a85460a35460a45460a9546098546040516370a0823160e01b81526001600160a01b03909116906370a0823190612638903090600401612dad565b602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267991906131d0565b6126839190612bc3565b61268d9190612bc3565b6126979190612bc3565b60a88190556000906126aa908390612bc3565b905060006126b88483612bc3565b609a546040519192506126ea916001600160a01b0390911690636fff860d60e01b90610893908990879060240161304d565b50846001600160a01b03167fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd998560405161272691815260200190565b60405180910390a2801561276b576040518181526000907fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd999060200160405180910390a25b60a65460a5541015151560a55463ffffffff1660008051602061329083398151915260a45460a8546040516127aa929190918252602082015260400190565b60405180910390a35050505050565b6127c382826114b1565b610c48576127d0816128f6565b6127db836020612908565b6040516020016127ec9291906131e9565b60408051601f198184030181529082905262461bcd60e51b8252610a2e91600401612d9a565b60008160000361282457506000610848565b61282e83836120d7565b90506001600160a01b0383163b1561289557604051633dfb89db60e11b8152600481018290526001600160a01b03841690637bf713b690602401600060405180830381600087803b15801561288257600080fd5b505af1925050508015612893575060015b505b826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced826040516128d091815260200190565b60405180910390a292915050565b60008183106128ed57816128ef565b825b9392505050565b60606108486001600160a01b03831660145b6060600061291783600261309e565b6129229060026130df565b67ffffffffffffffff81111561293a5761293a612ec9565b6040519080825280601f01601f191660200182016040528015612964576020820181803683370190505b509050600360fc1b8160008151811061297f5761297f613088565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106129ae576129ae613088565b60200101906001600160f81b031916908160001a90535060006129d284600261309e565b6129dd9060016130df565b90505b6001811115612a55576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612a1157612a11613088565b1a60f81b828281518110612a2757612a27613088565b60200101906001600160f81b031916908160001a90535060049490941c93612a4e81613258565b90506129e0565b5083156128ef5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a2e565b828054612ab090613019565b90600052602060002090601f016020900481019282612ad25760008555612b18565b82601f10612aeb5782800160ff19823516178555612b18565b82800160010185558215612b18579182015b82811115612b18578235825591602001919060010190612afd565b50610f76929150612b98565b828054612b3090613019565b90600052602060002090601f016020900481019282612b525760008555612b18565b82601f10612b6b57805160ff1916838001178555612b18565b82800160010185558215612b18579182015b82811115612b18578251825591602001919060010190612b7d565b5b80821115610f765760008155600101612b99565b634e487b7160e01b600052601160045260246000fd5b600082821015612bd557612bd5612bad565b500390565b60008085851115612bea57600080fd5b83861115612bf757600080fd5b5050820193919092039150565b6001600160601b03198135818116916014851015612c2c5780818660140360031b1b83161692505b505092915050565b60005b83811015612c4f578181015183820152602001612c37565b838111156108ca5750506000910152565b60008251612c72818460208701612c34565b9190910192915050565b600060208284031215612c8e57600080fd5b81356001600160e01b0319811681146128ef57600080fd5b6001600160a01b03811681146116f757600080fd5b60008060408385031215612cce57600080fd5b8235612cd981612ca6565b946020939093013593505050565b600060208284031215612cf957600080fd5b81356128ef81612ca6565b600060208284031215612d1657600080fd5b5035919050565b60008060408385031215612d3057600080fd5b823591506020830135612d4281612ca6565b809150509250929050565b60008151808452612d65816020860160208601612c34565b601f01601f19169290920160200192915050565b828152604060208201526000612d926040830184612d4d565b949350505050565b6020815260006128ef6020830184612d4d565b6001600160a01b0391909116815260200190565b60008083601f840112612dd357600080fd5b50813567ffffffffffffffff811115612deb57600080fd5b602083019150836020828501011115612e0357600080fd5b9250929050565b600080600080600080600080610100898b031215612e2757600080fd5b883567ffffffffffffffff80821115612e3f57600080fd5b612e4b8c838d01612dc1565b909a50985060208b0135915080821115612e6457600080fd5b50612e718b828c01612dc1565b9097509550506040890135612e8581612ca6565b93506060890135612e9581612ca6565b925060e089018a811115612ea857600080fd5b60808a01925035612eb881612ca6565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef257600080fd5b8235612efd81612ca6565b9150602083013567ffffffffffffffff80821115612f1a57600080fd5b818501915085601f830112612f2e57600080fd5b813581811115612f4057612f40612ec9565b604051601f8201601f19908116603f01168101908382118183101715612f6857612f68612ec9565b81604052828152886020848701011115612f8157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060608587031215612fb957600080fd5b8435612fc481612ca6565b935060208501359250604085013567ffffffffffffffff811115612fe757600080fd5b612ff387828801612dc1565b95989497509550505050565b6001600160a01b0392831681529116602082015260400190565b600181811c9082168061302d57607f821691505b60208210810361229557634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561307857600080fd5b815180151581146128ef57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156130b8576130b8612bad565b500290565b6000826130da57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130f2576130f2612bad565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b85018412161561313957613139612bad565b6001600160ff1b038401831381161561315457613154612bad565b50500390565b6001600160a01b0383168152604060208201819052600090612d9290830184612d4d565b60006020828403121561319057600080fd5b81516128ef81612ca6565b6000600160ff1b82016131b0576131b0612bad565b5060000390565b6000600182016131c9576131c9612bad565b5060010190565b6000602082840312156131e257600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161321b816017850160208801612c34565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161324c816028840160208801612c34565b01602801949350505050565b60008161326757613267612bad565b50600019019056fe5d179bbeed3396160151c93c13d38566dc1643f25a316cca998cd25f45a8bd3f38a9ab06ef5f5ea75fd622f984e03b2393343b6039c656e874e3fa9e3ddcd7b2a2646970667358221220489a22da17b95313f0d6a1ef754cdff207b412d2d43c8e78ca6f9fe5714a5f6264736f6c634300080d0033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
